刚开始学习java,我不明白我的代码有什么问题。PrimeIterator应该生成无限数量的素数(从数字 3 开始),但是当我打印输出时,我得到:3、5、7、9、11、13、15 等。
public class Prime {
PrimeIterator iter = new PrimeIterator();
private class PrimeIterator implements java.util.Iterator<Integer>
{
int numb = 1;
public boolean hasNext()
{
return true;
}
public Integer next()
{
nextCandidate:
do{
numb += 2;
int numbSqrt = (int)java.lang.Math.sqrt(numb);
for (int i = 3; i <= numbSqrt; i = i+2)
{
if (numb % i == 0)
{
continue nextCandidate;
}
}
}while(false);
return numb;
}
public void remove() {}
}
void printPrimes()
{
System.out.print(2);
while(iter.hasNext())
{
try
{
Thread.sleep(500);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.print(", " + iter.next());
}
}
}
我想为我的 do-while 循环使用标记为“继续”的语句。但是我的直觉告诉我,我用错了。