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。
答案 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
}