【问题标题】:Java - Why won't my prime number program print the last number?Java - 为什么我的素数程序不会打印最后一个数字?
【发布时间】:2014-12-14 22:17:04
【问题描述】:

我应该为 Java Intro 类编写一个程序,该类列出质数直到用户输入的数字。但是,使用我的代码,如果用户输入一个质数,我的程序不会列出该数字,即使它应该在质数时这样做。有人可以提示我为什么它不起作用吗?

    int userNum=kbd.nextInt();
    if (userNum<2){
        System.out.println("Not a valid number.");
        System.exit(1);
    }
    System.out.println("The prime numbers up to your integer are:");
    for (int num1 = 2; num1<userNum; num1++) {   
        boolean prime = true;


        for (int num2 = 2; num2 < num1; num2++) {
            if (num1 % num2 == 0) {
                prime = false;
                break; 

            }
        }

        // Prints the number if it's prime.
        if (prime) {
            System.out.print(num1 + " ");
        }
    }

例如,当我输入“19”时,程序会打印直到“17”(包括“17”)的所有素数。 谢谢!

【问题讨论】:

标签: java loops boolean


【解决方案1】:

将 for 语句的结束条件更改为 num1

【讨论】:

    【解决方案2】:

    您需要num1 将值userNum 作为最后检查的值。

    因此,您需要将num1 &lt; userNum 替换为num1 &lt;= userNum

    【讨论】:

      【解决方案3】:

      改变这个

      num1<userNum
      

      num1<=userNum
      

      此时您在for 循环中的两个数字相等之前停止。

      【讨论】:

        【解决方案4】:

        您的循环具有num1 &lt; userNum 的条件。这意味着它允许userNum 以下的所有数字。你似乎想要的是下面的所有数字,包括userNum,所以你想要num1 &lt;= userNum

        因此你的循环的开始是这样的:

            for (int num1 = 2; num1 <= userNum; num1++) {   
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-11-21
          • 1970-01-01
          • 2020-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-28
          相关资源
          最近更新 更多