用于打印复合数字的循环生成器

时间:2016-07-05 13:33:07

标签: java for-loop methods

我希望我的isPrimeNumber函数返回null(因此它不会打印isPrimeNumber函数中的任何数字),但是方法显然不能返回null。我希望for循环掩盖打印的数字和素数函数以及不在素数函数中的打印数和一个,即复合数。这是我的代码:

//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);
  }


}

main函数中的else语句应该打印1到10000之间复合的所有数字。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

当你找到一个素数时,不要return null。你不能从具有void返回类型的方法返回一个值,但即使这个代码确实通过了编译,你也不想在检测到素数时离开该方法。 / p>

更改条件
     if (isPrimeNumber(i)) {
         return null;
     } else {
         System.out.println(i);
     }

     if (!isPrimeNumber(i)) {
         System.out.println(i);
     }