【问题标题】:For loop generator that prints a composite number用于打印复合数的循环生成器
【发布时间】:2016-07-05 13:33:06
【问题描述】:

我希望我的 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 之间的所有复合数字。我该如何解决这个问题?

【问题讨论】:

    标签: java for-loop methods


    【解决方案1】:

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

    改变条件

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

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

    【讨论】:

      猜你喜欢
      • 2015-05-12
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 2019-07-31
      • 2017-04-29
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多