2016-07-05 14 views
1

私のisPrimeNumber関数がnullを返すようにしたいので(isPrimeNumber関数の数字は表示されません)、メソッドは明らかにnullを返すことはできません。私はforループが印刷する数字と素数関数と素数関数と1つにない数、つまり合成数に印刷されるようにしたい。主な機能で他の文が複合されている1と10000の間のすべての番号を印刷することになっている複合番号を出力するループジェネレータの場合

//prints all composite numbers 
public class App { 

    public static void main(String[] args) 
    { 
     for(int i = 1; i <= 10000; i++) 
     { 
     if (isPrimeNumber(i)) 
     { 
      return null; 

     }else{ 
      System.out.println(i); 
     } 
     } 
    } 


    public static boolean isPrimeNumber(int i) { 
     int factors = 0; 
     int j = 1; 

     while(j <= i) 
     { 
      if(i % j == 0) 
      { 
       factors++; 
      } 
      j++; 
     } 
     return (factors == 2); 
    } 


} 

:ここに私のコードは次のようになります。どのように私はこれを修正するだろうか?

答えて

3

素数を見つけたらreturn nullを入力しないでください。 Yyouは戻り値の型がvoidのメソッドから値を返すことはできませんが、たとえこのコードがコンパイルに合格したとしても、素数を検出したときにメソッドを終了したくないです。

変更

 if (isPrimeNumber(i)) { 
     return null; 
    } else { 
     System.out.println(i); 
    } 

から

 if (!isPrimeNumber(i)) { 
     System.out.println(i); 
    } 
への条件
関連する問題