我经常听说break
在 Java 中使用 s 被认为是不好的做法,但是在阅读了 Stack Overflow 上的一些线程之后,我发现并非如此。许多人说在某些情况下这是可以接受的。
在这种情况下,我对什么是/不是不好的做法有点困惑。
对于Project Euler:问题 7,我构建了以下代码。挑战是找到第 10001 个素数。
int index = 2, count = 1, numPrime = 1;
while (true) {
index++;
if (isPrime(index)) {
count = index;
numPrime++;
}
if (numPrime >= 10001)
break;
}
System.out.println(count);
这会返回正确的答案(在 21 毫秒内),但我是否忽略了一个严重的警告?100% 有可能创建一个没有中断的 while 循环,但我发现这更容易理解。
是我使用break;
不良做法的方式吗?我知道总有办法使用它,但这里真的有那么可怕吗?
非常感谢
贾斯蒂安
编辑
这是我的 isPrime() 代码。我还不如在我做的时候优化它。
public static boolean isPrime(long num) {
if (num == 2)
return true;
if (num % 2 == 0 || num <= 0)
return false;
for (long i = 3; i * i <= num; i += 2)
if (num % i == 0)
return false;
return true;
}