我正在尝试检查用户输入的是否是质数。下面的代码是我的。这里怎么了?
public static void main(String args[]) {
int a;
Scanner sc = new Scanner(System.in);
System.out.println("Enter number to check : ");
//sc.close();
for (a = sc.nextInt(); a > 2;) {
boolean isPrime = true;
for (int b = 2; b < a; b++) {
if (a % b == 0) {
isPrime = false;
//System.out.println(a + " is not a prime number");
break;
}
if(isPrime) {
System.out.println(a + " is a prime number");
}
}
}
}
}
答案 0 :(得分:2)
将打印语句移到内循环之外。
public static void main(String args[]) {
int a;
Scanner sc = new Scanner(System.in);
System.out.println("Enter number to check : ");
//sc.close();
for (a = sc.nextInt(); a > 2;) {
boolean isPrime = true;
for (int b = 2; b < a; b++) {
if (a % b == 0) {
isPrime = false;
break;
}
}
if(isPrime) {
System.out.println(a + " is a prime number");
} else {
System.out.println(a + " is not a prime number");
}
}
}
答案 1 :(得分:0)
您的程序对sc.nextInt()
的唯一调用出现在外部循环的初始化子句中。因此,将在该循环主体的第一次迭代之前读取输入,并且再也不会读取。结果,外循环的每次迭代都会测试a
的相同值,因此您将无限循环或根本不循环。
此外,正如@Gendarme在回答中指出的那样,您的内部循环中有一个System.out.println()
。应该将其提起至外部,以便仅在内部的所有迭代完成后才打印,并因此知道最终答案。