我正在尝试将用户的输入添加到列表中,然后以相反的顺序显示它。添加元素直到用户输入0.这是我的代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class InputInArrrayList{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int a = s.nextInt();
List<Integer> myList = new ArrayList<>();
while(a > 0) {
myList.add(a);
if (a == 0){
break;
}
}
Collections.reverse(myList);
System.out.println(myList);
}
}
但是当它为0时循环不会中断。相反,它会抛出OutOfMemoryError:Java堆空间。我做错了什么?
答案 0 :(得分:2)
执行中断所需的至少一个&gt; = 0:
swift3
答案 1 :(得分:1)
请更正你的循环
List<Integer> myList = new ArrayList<>();
while(true) {
int a = s.nextInt();
if (a == 0){
break;
} else
myList.add(a);
}
答案 2 :(得分:1)
您的问题是以下代码:
while(a > 0) {
myList.add(a);
if (a == 0){
break;
}
}
正如您在阅读第一个用户输入并将其分配给a
后所看到的那样,while循环无限运行。发生这种情况是因为a
变量的条件参数永远不会改变
因此,您必须插入在while循环中更新该变量的代码部分。以下是一个简单的修复:
Scanner s = new Scanner(System.in);
int a = 1;
List<Integer> myList = new ArrayList<>();
while(a > 0) {
a = s.nextInt();
if (a == 0) {
break;
} else {
myList.add(a);
}
}
答案 3 :(得分:0)
目前,当你设置为第一个数字然后保持循环时,你进入一个无限循环,因此,不断向列表添加相同的数字。 你需要在while循环中添加。 int a = s.nextInt();