此代码应该在ArrayList
中存储整数并在输入数字42时退出,但它不起作用。有时循环不会在提供42时停止,有时它不会存储在42之前输入的所有数字。
import java.util.*;
class test{
public static void main(String[] args){
ArrayList<Integer> ar = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
while(sc.nextInt() != 42){
ar.add(sc.nextInt());
}
for(int i : ar){
System.out.println(i);
}
}
}
输出:
C:\Users\pj\Desktop\j2\new>java test
1
2
3
5
42
2
5
答案 0 :(得分:4)
while(sc.nextInt() != 42){
ar.add(sc.nextInt());
}
你在每次迭代中读取两个整数,所以你可能正在循环中读取42,因此当你阅读它时你不会停止。
尝试将其更改为:
int i = 0;
while((i = sc.nextInt()) != 42){
ar.add(i);
}
答案 1 :(得分:0)
这三行引起了问题;你要求用户输入两次
while(sc.nextInt() != 42){
ar.add(sc.nextInt());
}
您应该将值存储到变量中,例如
int n = sc.nextInt();
while (n != 42) {
ar.add(n);
n = sc.nextInt();
}
希望这有助于:)