[英]Java - Why won't my prime number program print the last number?
我应该为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”。 谢谢!
您需要num1
才能将值userNum
作为要检查的最后一个值。
因此,您需要将num1 < userNum
替换为num1 <= userNum
。
您的循环的条件为num1 < userNum
。 这意味着它允许userNum
以下的所有数字。 您似乎想要的是下面的所有数字,包括userNum
,所以您想要num1 <= userNum
。
因此,循环的开始是这样的:
for (int num1 = 2; num1 <= userNum; num1++) {
改变这个
num1<userNum
至
num1<=userNum
此刻,您在for
循环中两个数字相等之前停止。
将for语句的结束条件更改为num1 <= userNum。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.