(Java)在有条件的情况下使用 while 函数

(Java)Using while function with condition

我正在制作一个程序,将用户输入的所有数字相加,直到出现 0。当 0 作为输入时,我想显示所有保存的数字。当我 运行 程序时,我得到了“java.lang.OutOfMemoryError: Java heap space”这个错误,我想知道哪一部分是错误的。

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    ArrayList<Integer> myList = new ArrayList<Integer>();
    int a = scanner.nextInt();
    
    while(a!=0) {
        myList.add(a);
    }
    for(int i=0;i<myList.size();i++) {
        System.out.println(myList.get(i));
    }

您需要继续从标准输入读取新的数字。否则,a 不会改变值,并会导致上述错误:

while (a !=0) {
  myList.add(a);
  a = scanner.nextInt();
}

恕我直言,for 循环更合适:

for (int a = scanner.nextInt(); a != 0; a = scanner.nextInt()) {
    myList.add(a);
}

这具有将 a 的范围限制在循环中的理想效果(应该始终尽可能限制所有内容的范围)。