【发布时间】:2017-05-14 19:31:32
【问题描述】:
我对 Java 相当陌生,只是无法弄清楚为什么我的程序无法运行。任何人都可以提供帮助,我们将不胜感激!
public class LabOne {
public static void main(String[] args) {
System.out.println("Please input a number: \n");
int inputReceive = 44;
int nextPrime = inputReceive;
int n = 5;
boolean isprime=true;
do {
if(inputReceive <= 1)
isprime = false;
else if(inputReceive <= 3){
System.out.printf("%d \n",isprime);
return;
}else if( inputReceive % 2 == 0 || inputReceive % 3 == 0)
isprime = false;
while ((n*n)<inputReceive){
if (inputReceive % n == 0 || inputReceive % (n + 2) == 0)
isprime = false;
n = n+6;
isprime = true;
}
nextPrime++;
}while(isprime = false);
System.out.printf("Next prime number is %d",nextPrime);
}
}
给出的输出是 45,这是不正确的。
【问题讨论】:
-
不能说这个程序,但这个条件似乎不正确。
while(isprime = false); -
您有很多关于 do...while 循环中的 inputReceive 的问题。这些问题的答案在循环的第一次迭代后不会改变,因为 inputReceive 没有改变。摆脱这个问题将简化你的代码,让你更容易看到什么是不工作的。
-
添加到@Shashwat 评论,通常你会做
while(!isprime)但如果你不习惯它然后像这样反转while( false == isprime)的条件,这样如果你错误地尝试分配一个对它的价值,它不应该编译。 -
欢迎来到 Stack Overflow!看来您需要学习使用调试器。请帮助自己一些complementary debugging techniques。如果您之后仍有问题,请随时返回 Minimal, Complete and Verifiable Example 来证明您的问题。