gpt4 book ai didi

java - While 循环不会使用用户的新输入循环回到开头

转载 作者:行者123 更新时间:2023-12-02 08:49:02 25 4
gpt4 key购买 nike

我一直在尝试自己完善这个程序,但我只是看不出我做错了什么。该计划的目的就是要做这些事情。

1)询问用户号码

2)如果数字是正数,则打印出该数字

3) 如果该数字也是素数,则打印它也是素数

4)继续执行上述操作,直到用户输入负数。

问题是,该程序仅在开始时确定输入的数字是否为质数。之后,当用户被要求提供另一个数字(如果它大于 0)时,程序不会循环回到开头来确定该数字是否为素数。相反,它只是坚持开始时确定的值(素数或非素数),并打印出与第一个值和第二个值相同的语句。我希望它每次都重新评估该值以查看该数字是否为素数,直到用户输入负数。附:这是我攻读计算机科学学位的第一年。我发现编程非常有趣且具有挑战性(概念)。但每次我解决这些问题时,我都会接受挑战并找到成就感。

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);
}
}

最佳答案

好吧,我看到了问题所在。您应该将 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);
}

关于java - While 循环不会使用用户的新输入循环回到开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60903569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com