如何存储一个;“无限”;ArrayList中的整数数(Java)
所以我有一个方法,它接收用户想要输入的数字,并将它们存储到数组列表中。现在我有以下方法:如何存储一个;“无限”;ArrayList中的整数数(Java),java,arraylist,java.util.scanner,Java,Arraylist,Java.util.scanner,所以我有一个方法,它接收用户想要输入的数字,并将它们存储到数组列表中。现在我有以下方法: public static ArrayList<Integer> inputArrayList(){ ArrayList<Integer> a = new ArrayList<Integer>(); Scanner scan = new Scanner(System.in); int t; for(int i=0;i<10000;
public static ArrayList<Integer> inputArrayList(){
ArrayList<Integer> a = new ArrayList<Integer>();
Scanner scan = new Scanner(System.in);
int t;
for(int i=0;i<10000;i++){
t = scan.nextInt();
if(t!=0){
a.add(t);
}else{
i+=200000;
}
}
return a;
}
公共静态ArrayList inputArrayList(){
ArrayList a=新的ArrayList();
扫描仪扫描=新扫描仪(System.in);
int t;
for(int i=0;iArrayList
采用类型为int
的索引,因此只能索引到整数的最大值
您可以处理一个值流,但它不会使用ArrayList
。您应该重新考虑您的需求和实现。ArrayList
采用int
类型的索引,因此您只能索引到整数的最大值
您可以处理一个值流,但它不会使用ArrayList
。您应该重新考虑您的需求和实现。您可以更改条件,在得到零时退出
boolean accumulating = true;
while(accumulating){
accumulating = scan.hasNextInt();
if(accumulating){
a.add(scan.nextInt());
}
}
如果用户输入的内容不是int,则此操作将退出。因为您使用的是ArrayList
,并且您只能保存Integer.MAX\u VALUE
元素,所以会出现一个li模拟
或者更简洁地说
while(scan.hasNextInt()){
a.add(scan.nextInt());
}
当得到零时,您可以将条件更改为退出
boolean accumulating = true;
while(accumulating){
accumulating = scan.hasNextInt();
if(accumulating){
a.add(scan.nextInt());
}
}
如果用户输入的内容不是int,则此操作将退出。因为您使用的是ArrayList
,并且您只能保存Integer.MAX\u VALUE
元素,所以会出现一个li模拟
或者更简洁地说
while(scan.hasNextInt()){
a.add(scan.nextInt());
}
这是我现在能想到的最简单的实现。非常简单,只需使用另一个变量跟踪是否退出循环,否则添加到无穷大。现在它接受任何达到固有极限的整数
这是我现在能想到的最简单的实现。非常简单,只需使用另一个变量来跟踪是否退出循环,否则添加到无穷大。现在它接受任何达到固有极限的整数。我认为您需要这样做:
System.out.println("If you want to exit, enter any non number?");
int t;
do {
try {
t = scan.nextInt();
a.add(t);
} catch (NumberFormatException e) {
break;//if the user enter a non number break your loop
}
} while (true);//loop until the user enter a non number
我认为你需要做这样的事情:
System.out.println("If you want to exit, enter any non number?");
int t;
do {
try {
t = scan.nextInt();
a.add(t);
} catch (NumberFormatException e) {
break;//if the user enter a non number break your loop
}
} while (true);//loop until the user enter a non number
使用while(true)循环并在给定的输入上使用break退出它;这样您就可以输入0并退出,或者您的意思是什么?“[…]我想改进它,以便该方法在技术上可以接受无限多的值[…]”除了限制之外,您还需要非常大的内存,这在技术上是不可能的……是的,这也是。使用while(true)循环并在给定的输入上使用break退出它;这样您就可以输入0并退出,或者您的意思是什么?“[…]我想改进它,以便该方法在技术上可以接受无限多的值[…]”除了限制之外,您还需要非常大的内存,这在技术上是不可能的……是的,也是这样。如果用户输入0,它就会退出。您的@matt是什么意思?您最初的示例中有if(t!=0)
这意味着当用户输入0时,循环将退出,这意味着用户不能将其列表设置为0。如果用户输入0,循环将退出。您的@matt是什么意思?您最初的示例中有if(t!=0)
这意味着当用户输入0时,循环退出,这意味着用户无法将其列表设置为0。在使用它之前,您需要初始化u
。在使用它之前,您需要初始化u
。