gpt4 book ai didi

java - 为什么在 while 循环中使用 foreach 循环会出错?

转载 作者:行者123 更新时间:2023-11-29 07:44:35 27 4
gpt4 key购买 nike

我为欧拉计划第 7 题做的快速程序一直出错。

我不熟悉 Java。我将问题 7 的 Python 代码转移到 Java 中,只是想看看我是否能做到。我正在自学 Java 以领先于游戏。

我的 Python 程序的代码是:

no = 2
print(3 % 2)
primes = [2]
while len(primes) != 10001:
no = no + 1
no2 = 0
for each in primes:
if no % each != 0:
no2 = no2 + 1
if len(primes) == no2:
print(primes[-1])
primes.append(no)
print("Final answer is: " + str(primes[-1]))

我的 Java 程序的代码是:

import java.util.ArrayList;
import java.util.List;

public class P7Euler {

public static void main(String[] args) {
int no = 2;
int no2 = 0;
List<Integer> primes = new ArrayList<Integer>();
primes.add(2);
while (primes.size() != 20){
no = no + 1;
no2 = 0;
for(int i : primes){
if(no % i != 0){
no2 = no2 + 1;
if(primes.size() == no2){
System.out.println(primes.get(primes.size() - 1));
primes.add(no);
}
}

}
}
System.out.println("The final answer is: " + primes.get(primes.size() - 1));
}
}

错误信息:

Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at Test1.examples.P7Euler.main(P7Euler.java:16)

编辑:代码错误,我原来使用的 for 循环现在在那里。

最佳答案

首先,我假设循环的正确语法是 for(int i : primes){

您不能在使用 foreach 循环遍历元素时修改列表。尝试在迭代时使用 java.util.ListIterator 添加到列表:

for (ListIterator<Integer> listIterator = primes.listIterator(); listIterator.hasNext();) {
int i = listIterator.next();
if(no % i != 0){
no2 = no2 + 1;
if(primes.size() == no2){
System.out.println(primes.get(primes.size() - 1));
listIterator.add(no);
}
}
}

关于java - 为什么在 while 循环中使用 foreach 循环会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045951/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com