Java :在 while 循环中嵌套 if/else 语句
Java : Nesting an if/else statement inside a while loop
这是我在 Whosebug 中的第一个问题,因此我希望您能原谅我在设置此问题时可能会犯的许多错误 post...
我的问题如下:这段代码应该生成一个随机数,将其显示给用户(为了帮助我猜测它而无需进行太多尝试......这应该只是一个练习),要求用户猜测一个数字在 0 到 50 之间,检查输入是否为整数,如果用户猜对了数字,则打印 "Yes, the number is.." 。
但是,如果用户输入一个字母或任何不是数字的数字,if/else 循环就会变得疯狂,程序开始打印 "Choose a number between 0 and 50: Please insert a number between 0 and 50, not a letter" 而不会停止......
任何人都可以帮助我吗?
package methods;
import java.util.Scanner;
public class Methods {
static int randomNumber;
static Scanner userInput = new Scanner(System.in);
public static void main(String[] args) {
System.out.println(getRandomNum());
int guessResult = 1;
int randomGuess = 0;
while (guessResult != -1) {
System.out.print("Choose a number between 0 and 50: ");
if (userInput.hasNextInt()) {
randomGuess = userInput.nextInt();
guessResult = checkGuess(randomGuess);
} else {
System.out.println("Please insert a number, not a letter");
}
}
System.out.println("Yes, the number is " + randomGuess);
}
public static int getRandomNum() {
randomNumber = (int) (Math.random() * 51);
return randomNumber;
}
public static int checkGuess(int guess) {
if (guess == randomNumber) {
return -1;
} else {
return guess;
}
}
}
您允许用户输入一个字母(意图给出错误消息,但您只调用 scanner.nextInt)
您应该将输入读取为字符串,然后对其进行解析。
String input = null;
while (guessResult != -1) {
System.out.print("Choose a number between 0 and 50: ");
input = sc.next();
try
{
randomGuess = Integer.parseInt(input);
checkGuess(randomGuess);
} catch(NumberFormatException ex)
{
System.out.println("Please insert a number, not a letter");
}
}
这是我在 Whosebug 中的第一个问题,因此我希望您能原谅我在设置此问题时可能会犯的许多错误 post... 我的问题如下:这段代码应该生成一个随机数,将其显示给用户(为了帮助我猜测它而无需进行太多尝试......这应该只是一个练习),要求用户猜测一个数字在 0 到 50 之间,检查输入是否为整数,如果用户猜对了数字,则打印 "Yes, the number is.." 。 但是,如果用户输入一个字母或任何不是数字的数字,if/else 循环就会变得疯狂,程序开始打印 "Choose a number between 0 and 50: Please insert a number between 0 and 50, not a letter" 而不会停止...... 任何人都可以帮助我吗?
package methods;
import java.util.Scanner;
public class Methods {
static int randomNumber;
static Scanner userInput = new Scanner(System.in);
public static void main(String[] args) {
System.out.println(getRandomNum());
int guessResult = 1;
int randomGuess = 0;
while (guessResult != -1) {
System.out.print("Choose a number between 0 and 50: ");
if (userInput.hasNextInt()) {
randomGuess = userInput.nextInt();
guessResult = checkGuess(randomGuess);
} else {
System.out.println("Please insert a number, not a letter");
}
}
System.out.println("Yes, the number is " + randomGuess);
}
public static int getRandomNum() {
randomNumber = (int) (Math.random() * 51);
return randomNumber;
}
public static int checkGuess(int guess) {
if (guess == randomNumber) {
return -1;
} else {
return guess;
}
}
}
您允许用户输入一个字母(意图给出错误消息,但您只调用 scanner.nextInt)
您应该将输入读取为字符串,然后对其进行解析。
String input = null;
while (guessResult != -1) {
System.out.print("Choose a number between 0 and 50: ");
input = sc.next();
try
{
randomGuess = Integer.parseInt(input);
checkGuess(randomGuess);
} catch(NumberFormatException ex)
{
System.out.println("Please insert a number, not a letter");
}
}