Scanner input = new Scanner(System.in);
ArrayList<String[]> contact = new ArrayList<String[]>();
String[] record = new String[2];
int x1=1;
while(x1==3){
for(int i=0;i<2;i++){
record[i]=input.nextLine();
}
contact.add(record);
x1++;
}
我尝试打印列表,发现该列表保留了最后一条记录三次。前两个记录(在前两个循环中给出)被第三个记录替换。
答案 0 :(得分:3)
我假设您正在尝试多次将数组添加到列表中。您应该在while循环的每次迭代中添加一个不同的数组:
while(x1<=3){
String[] record = new String[2];
for(int i=0;i<2;i++){
record[i]=input.nextLine();
}
contact.add(record);
x1++;
}
我还假设while(x1==3)
是一个拼写错误,你的意思是<=
。
答案 1 :(得分:0)
我认为你的代码存在缺陷。我试图在下面解决它;
while(x1<=3){
//create new string array
String[] record = new String[2];
for(int i=0;i<2;i++){
record[i]=input.nextLine();
}
contact.add(record);
x1++;
}
不重新声明数组&#34;记录&#34;您将参考原来的三次添加。
编辑:看到Eran有同样的事情,但我错过了&lt; =而不是==比较。如果您使用==,那么您将无法进入循环,因为条件最初会失败答案 2 :(得分:-3)
你应该在while循环中初始化字符串数组。这样就可以避免重写列表中的旧数组。像这样。
while (x1 <= 3) {
String[] record = new String[2];
for (int i = 0; i < 2; i++) {
record[i] = input.nextLine();
}
contact.add(record);
x1++;
}