我爲項目歐拉問題7所做的快速程序不斷產生錯誤。爲什麼我在while循環中出現foreach循環的錯誤?
我對Java不熟悉。我將Problem 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循環現在在那裏。
您正在使用哪個版本的Java? – Matthieu 2014-11-20 17:38:35
這是真的java代碼? – A4L 2014-11-20 17:40:17
@ A4L我認爲它是Java 8和它的「lambdas」(他們更喜歡通過未簽名的支持(視力)) – Matthieu 2014-11-20 17:44:10