如何从用户处接受整数并将其存储在java的int数组中
我试图从用户那个里一个接一个地接受原始整数列表,并将其存储到原始数组中供以后使用。 这是我的密码:
Scanner scanner=new Scanner(System.in);
int n= scanner.nextInt();
ArrayList<Integer> arr=new ArrayList<>();
int[] a = new int[arr.size()];
Iterator<Integer> iterator = arr.iterator();
if (n < 15){
for (int i=0;i<n;i++){
System.out.println("enter "+i+" th number");
arr.add(scanner.nextInt());
a[i] = iterator.next().intValue();
}}
else {
System.out.println("Please enter number less than 15");
//break;
}e here
出现运行时错误,代码如下:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at App.main(App.java:26)
这是ArrayList的failfast问题(在这种情况下,在ArrayList上迭代时不允许修改列表)。 我怎样才能使上述代码失效保护?。。。。我对问题的理解是否正确? 提前非常感谢
# 1 楼答案
您不能向列表中添加内容,然后从该列表上预先存在的迭代器中读取内容
如果需要刚才添加的元素,请使用
但是,
arr
的长度为零,因此arr[i]
将产生一个ArrayIndexOutOfBoundsException
# 2 楼答案
您面临这个问题是因为您通过
iterator
读取了ArrayList
,同时使用arr.add(scanner.nextInt());
修改了它。您应该摆脱iterator
,使用arr.get(index)
访问ArrayList
的给定元素# 3 楼答案
数组的大小应为
n
个元素,并且不需要List
或Iterator
来读取Scanner
。你所需要的只是