我的问题很简单,但是我找不到解决它的方法。基本上,我想创建一个Arraylist并使用循环向其添加元素(最多我想要的元素)。我使用netbeans gui,每当我按下按钮"添加",我想添加字符串变量的名称和大写到我的数组列表,并显示在一个TextArea。比如:
[london, england,america,united states etc..]
到目前为止,它所做的唯一的事情就是多次打印两个变量name和大写字母,如:[londonn, england, london, england etc..]
下面是代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String name, capital;
ArrayList<String> input = new ArrayList<>();
name = jTextField1.getText();
capital = jTextField2.getText();
for(int i=0;i < 10;i++) {
input.add(name);
input.add(capital);
jTextArea4.setText(String.valueOf(input));
}
}
如果你想让你的ArrayList
持续增长,那么你需要让它成为一个类变量,而不是你的jButton1ActionPerformed
的局部变量。
同时取出for
回路。当你给你的ArrayList
添加一个新的名字和大写字母时,你只需要做一次。
像这样:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// Make sure input is a class variable and it will continue to grow
input.add(jTextField1.getText());
input.add(jTextField2.getText());
jTextArea4.setText(String.valueOf(input));
}
一旦你的ArrayList
是一个类变量,你会想要一种方法来清除ArrayList
或从它删除项目。
您必须删除for循环,因为您多次存储相同的值。
你可以这样做。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String name, capital;
ArrayList<String> input = new ArrayList<>();
name = jTextField1.getText();
capital = jTextField2.getText();
input.add(name);
input.add(capital);
jTextArea4.setText(String.valueOf(input));
}
这里从文本字段中获取名称和大写值,并将其插入数组列表中,然后在textfield4..
如果你想添加尽可能多的元素,你可以这样做,但当你设置jtextField4你必须从输入数组列表中获得最后一个元素,因为数组列表对象包含10个字符串。
这样的private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String name, capital;
ArrayList<String> input = new ArrayList<>();
name = jTextField1.getText();
capital = jTextField2.getText();
for(int i=0;i < 10;i++) {
input.add(name);
input.add(capital);
jTextArea4.setText(String.valueOf(input.get(input.size)));
}
}
尝试将jTextArea4.setText(String.valueOf(input))
移出for loop
您需要在循环之外保持以下代码:
jTextArea4.setText(String.valueOf(input));
完全删除循环。如果你想让数组列表有用你必须让它成为一个类级变量
ArrayList<String> input = new ArrayList<>();
private void jButton1ActionPerformed(ActionEvent evt) {
String name, capital;
name = jTextField1.getText();
capital = jTextField2.getText();
input.add(name);
input.add(capital);
jTextArea4.setText(String.valueOf(input));
}