为什么while循环只接受多个2的输入?

时间:2017-05-05 03:48:18

标签: java arraylist while-loop

package hw6;
import java.util.Scanner;
import java.util.ArrayList;

public class hw6q1 {

    public static void main(String[] args) {
        ArrayList<Integer> al = new ArrayList<Integer>();
        Scanner input = new Scanner(System.in);
        System.out.println("Enter integers between 1 and 100 (enter 0 to 
stop):");
        while(input.nextInt() != 0){
            al.add(input.nextInt());
        }
        input.close();
        for(int i = 0; i < al.size(); i++){
            System.out.println(al.get(i));
        }



    }

}

这就是我的代码,当我运行程序并输入数字1 2 3 4然后0结束循环它只打印2和4.我想知道为什么会这样,以及如何修复它arraylist获得所有数字1 2 3和4。

2 个答案:

答案 0 :(得分:1)

while(input.nextInt() != 0){
    al.add(input.nextInt());
}

你手中有一个int,所以你进入循环,忽略手中的int,然后抓住下一个int并将其存储在集合中。您需要存储第一个int并将其存储在ArrayList中,然后再询问下一个。

e.g。

int num = input.nextInt();
while(num != 0)
{
    al.add(num);
    num = input.nextInt();
}

答案 1 :(得分:0)

每个input.nextInt()都会读取整数输入。

假设您输入了流:1 2 3 4 0

while(input.nextInt() != 0) { // Reads 1               | reads 3                | reads 0
    al.add(input.nextInt()); // Reads 2 and adds to al | reads 4 and adds to al
}