使用for循环将string []添加到ArrayList中

时间:2015-04-08 15:33:32

标签: java arraylist

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++;
}

我尝试打印列表,发现该列表保留了最后一条记录三次。前两个记录(在前两个循环中给出)被第三个记录替换。

3 个答案:

答案 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++;
    }