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 ループにラベル付きの「continue」ステートメントを使用したかったのです。しかし、私の直感は、私がそれを間違って使用していることを教えてくれます.