Java 将输入添加到列表中
我试图将用户的输入添加到列表中,然后以相反的顺序显示它。添加元素直到用户输入0。这是我的密码:Java 将输入添加到列表中,java,list,arraylist,input,collections,Java,List,Arraylist,Input,Collections,我试图将用户的输入添加到列表中,然后以相反的顺序显示它。添加元素直到用户输入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
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);
}
}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
导入java.util.Scanner;
公共类InputArrayList{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
int a=s.nextInt();
List myList=new ArrayList();
而(a>0){
添加(a);
如果(a==0){
打破
}
}
收藏。反面(myList);
System.out.println(myList);
}
}
但是循环在0时不会中断。相反,它抛出了OfMemoryError:Java堆空间。我做错了什么?请更正您的循环
List<Integer> myList = new ArrayList<>();
while(true) {
int a = s.nextInt();
if (a == 0){
break;
} else
myList.add(a);
}
List myList=new ArrayList();
while(true){
int a=s.nextInt();
如果(a==0){
打破
}否则
添加(a);
}
执行中断至少需要一个a>=0:
while(a >= 0) {
myList.add(a);
if (a == 0){
break;
}
}
您的问题是以下代码:
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);
}
}
Scanner s=新的扫描仪(System.in);
INTA=1;
List myList=new ArrayList();
而(a>0){
a=s.nextInt();
如果(a==0){
打破
}否则{
添加(a);
}
}
当前,当一个get设置为第一个数字时,您将进入一个无限循环,然后继续循环,因此,继续向列表中添加相同的数字。
您需要在while循环中添加。
int a=s.nextInt() 您只读取一个输入(在循环之前)。然后进入一个无限循环,如果它大于0,请在您的脑海中尝试执行您的代码。示例:用户输入
5
<代码>5>0因此进入while循环。您将5
添加到列表中<代码>5!=0这样while就不会中断。再次检查循环条件,发现5
仍然大于0
。它将再次添加到列表中。不许休息。另一个循环。你看到问题了吗?:)