Java While循环不会使用用户的新输入循环回起始位置
我一直在努力完善我自己的程序,我只是看不出我做错了什么。这个项目的目的就是做这些事情 1) 询问用户电话号码 2) 如果数字为正数,请打印出数字 3) 如果数字也是素数,请打印它也是素数 4) 继续执行上述操作,直到用户输入负数为止 问题是,程序只在开始时工作并确定输入的数字是否为素数。之后,当用户被要求输入另一个数字(如果大于0)时,程序就不会返回到开头来确定该数字是否为素数。相反,它只是坚持最初确定的值(prime或not prime),并打印出与第一个值(第二个值)相同的语句。我希望它每次都重新评估这个值,看看这个数字是否为素数,直到用户输入一个负数。 这是我第一年攻读C.S学位。我觉得编程真的很有趣,也很有挑战性。但我接受了这一挑战,并在每次解决这些问题时都能找到一种成就感Java While循环不会使用用户的新输入循环回起始位置,java,loops,while-loop,Java,Loops,While Loop,我一直在努力完善我自己的程序,我只是看不出我做错了什么。这个项目的目的就是做这些事情 1) 询问用户电话号码 2) 如果数字为正数,请打印出数字 3) 如果数字也是素数,请打印它也是素数 4) 继续执行上述操作,直到用户输入负数为止 问题是,程序只在开始时工作并确定输入的数字是否为素数。之后,当用户被要求输入另一个数字(如果大于0)时,程序就不会返回到开头来确定该数字是否为素数。相反,它只是坚持最初确定的值(prime或not prime),并打印出与第一个值(第二个值)相同的语句。我希望它每次
import java.util.Scanner;
public class Prime3 {
public static void main(String[] args) {
int userNum;
int i = 2;
boolean isPrime = true;
Scanner input = new Scanner(System.in);
// Ask user for initial number
System.out.println("Please enter a number.");
userNum = input.nextInt();
// Determining whether or not number entered is prime
while (i <= userNum/2) {
System.out.println("Checking if " + i + " is a multiple of n");
if (userNum%i == 0) {
System.out.println(i + " is a multiple of " + userNum);
isPrime = false;
break;
}
i++;
}
// Print out user number if the number is positive.
while (userNum > 0) {
System.out.println("You entered the number, " + userNum);
if (isPrime) { // If it's a prime, state that it's a prime
System.out.println("No even multiples found. " + userNum + " is a prime number");
}
userNum = input.nextInt();
}
System.out.println("Invalid input. Program now ending.");
System.exit(0);
}
}
import java.util.Scanner;
公共类素数3{
公共静态void main(字符串[]args){
int userNum;
int i=2;
布尔值isPrime=true;
扫描仪输入=新扫描仪(System.in);
//询问用户初始编号
System.out.println(“请输入一个数字”);
userNum=input.nextInt();
//确定输入的数字是否为素数
而(i 0){
System.out.println(“您输入的数字,+userNum”);
如果(isPrime){//如果它是素数,说明它是素数
System.out.println(“找不到偶数倍。”+userNum+“是一个素数”);
}
userNum=input.nextInt();
}
System.out.println(“无效输入。程序现在结束。”);
系统出口(0);
}
}
通常,此代码的构造容易出错。你应该这样做:
如果你照我说的做,应该没有问题。好吧,我明白了。您应该将
while(userNum>0)
移到顶部。因此,您的最终代码应该如下所示:
public class Prime3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// Ask user for initial number
System.out.println("Please enter a number.");
int userNum = input.nextInt();
while (userNum > 0) {
int i = 2;
boolean isPrime = true;
// Determining whether or not number entered is prime
while (i <= userNum / 2) {
System.out.println("Checking if " + i + " is a multiple of n");
if (userNum % i == 0) {
System.out.println(i + " is a multiple of " + userNum);
isPrime = false;
break;
}
i++;
}
// Print out user number if the number is positive.
System.out.println("You entered the number, " + userNum);
if (isPrime) { // If it's a prime, state that it's a prime
System.out.println("No even multiples found. " + userNum + " is a prime number");
}
userNum = input.nextInt();
}
System.out.println("Invalid input. Program now ending.");
System.exit(0);
}
公共类Prime3{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
//询问用户初始编号
System.out.println(“请输入一个数字”);
int userNum=input.nextInt();
while(userNum>0){
int i=2;
布尔值isPrime=true;
//确定输入的数字是否为素数
虽然(我是的……我能理解。我只是一个初学者。谢谢你的输入。是的!正是我想要的。这是我试图做的,但它把我和里面的第二个while循环搞混了。它对我来说太乱了。谢谢你为我澄清这一点并帮助一个兄弟。再次感谢!只是澄清一下,你能告诉我是什么吗我的第一个代码是错误的。因为我的代码不是在第二个while循环中说的,如果数字是正数,就打印出来。如果数字(isPrime),然后声明其素数?然后用另一个用户输入重复此操作?是的,它这样说,但它只是重复代码的这一部分。它不检查一个新数字是否为素数,它只是使用从第一个数字中获得的值。在这种情况下,变量isPrime永远不会更改值,因为它的值是在fi中分配的rst while循环,只有在第一次输入后才能访问。明白了!我真的很感激!