如何让用户重新输入一个值直到它有效
How to make a user reinput a value until it is valid
我最近开始学习 Java 在网页设计上花了很多时间,但是当我尝试创建一个简单的猜谜游戏程序时,我 运行 遇到了问题。
final int MAX = 15;
int answer, guess;
Scanner scan = new Scanner (System.in);
Random generator = new Random();
answer = generator.nextInt(MAX) + 1;
System.out.println("I'm thinking of a number between 1 and " + MAX + ". Guess what is it: ");
guess = scan.nextInt();
if (guess > MAX)
System.out.println("Please choose a number between 1 and 15.");
if (guess == answer)
System.out.println("You got it! Good guessing!");
else
{
System.out.println("This isn't correct, sorry!");
System.out.println("The number was " + answer);
我希望拥有它,所以如果用户输入大于 15 的值,它会将他们发回以重新输入 1 到 15 之间的有效数字。
首先,如果我知道它尚未完成,因为这是我计划添加此功能的地方。
首先查看 Control Flow Statements,尤其是 for-loop
、while-loop
和 do-while-loop
的部分
基本上,您需要某种循环,该循环将继续重复直到满足某些退出条件(该值在您指定的范围内)
类似...
do {
System.out.print("Please choose a number between 1 and " + max + ":");
guess = scan.nextInt();
} while (guess < 1 || guess > 15);
这基本上会继续提示用户,直到他们输入一个介于 1 和 15 之间的值。
作为一个可运行的例子...
import java.util.Random;
import java.util.Scanner;
public class GuessMe {
public static void main(String[] args) {
int max = 15;
int guess = 0;
Random generator = new Random();
int answer = generator.nextInt(max) + 1;
Scanner scan = new Scanner(System.in);
System.out.println("I'm thinking of a number between 1 and " + max + ". Guess what is it\n");
do {
do {
System.out.print("Please choose a number between 1 and " + max + ":");
guess = scan.nextInt();
} while (guess < 1 || guess > 15);
if (guess < answer) {
System.out.println("Good guess, but mine is higher");
} else if (guess > answer) {
System.out.println("Good guess, but mine is low");
}
} while (guess != answer);
System.out.println("Good guess, that's right!");
}
}
已更新
严格来说,您不需要内部循环(在本例中),但它确实展示了您如何能够重新提示用户输入单个给定值。
另一种方法可能是使用 if-else
块而不是更直接地检查输入结果。
import java.util.Random;
import java.util.Scanner;
public class GuessMe {
public static void main(String[] args) {
int max = 15;
int guess = 0;
Random generator = new Random();
int answer = generator.nextInt(max) + 1;
Scanner scan = new Scanner(System.in);
System.out.println("I'm thinking of a number between 1 and " + max + ". Guess what is it\n");
do {
System.out.print("Please choose a number between 1 and " + max + ":");
guess = scan.nextInt();
if (guess < 1 || guess > 15) {
System.out.println("You did't enter a valid number, please try again");
} else if (guess < answer) {
System.out.println("Good guess, but mine is higher");
} else if (guess > answer) {
System.out.println("Good guess, but mine is low");
}
} while (guess != answer);
System.out.println("Good guess, that's right!");
}
}
我认为你可以像这样使用递归:
/**
* main business process
* @param MAX the max number
*
* */
public static void guess(int MAX) {
int answer, guess;
Scanner scan = new Scanner (System.in);
Random generator = new Random();
answer = generator.nextInt(MAX) + 1;
guess = scan.nextInt();
if (guess > MAX || guess < 1) {
System.out.println("Please choose a number between 1 and 15.");
//recursion
guess(MAX);
} else if (guess == answer) {
System.out.println("You got it! Good guessing!");
} else {
System.out.println("This isn't correct, sorry!");
System.out.println("The number was " + answer);
}
}
/**
* guessNumber method
*
* */
public static void guessNumber() {
final int MAX = 15;
System.out.println("I'm thinking of a number between 1 and " + MAX + ". Guess what is it: ");
guess(MAX);
}
public static void main(String[] args) {
guessNumber();
}
希望对您有所帮助!
我最近开始学习 Java 在网页设计上花了很多时间,但是当我尝试创建一个简单的猜谜游戏程序时,我 运行 遇到了问题。
final int MAX = 15;
int answer, guess;
Scanner scan = new Scanner (System.in);
Random generator = new Random();
answer = generator.nextInt(MAX) + 1;
System.out.println("I'm thinking of a number between 1 and " + MAX + ". Guess what is it: ");
guess = scan.nextInt();
if (guess > MAX)
System.out.println("Please choose a number between 1 and 15.");
if (guess == answer)
System.out.println("You got it! Good guessing!");
else
{
System.out.println("This isn't correct, sorry!");
System.out.println("The number was " + answer);
我希望拥有它,所以如果用户输入大于 15 的值,它会将他们发回以重新输入 1 到 15 之间的有效数字。
首先,如果我知道它尚未完成,因为这是我计划添加此功能的地方。
首先查看 Control Flow Statements,尤其是 for-loop
、while-loop
和 do-while-loop
基本上,您需要某种循环,该循环将继续重复直到满足某些退出条件(该值在您指定的范围内)
类似...
do {
System.out.print("Please choose a number between 1 and " + max + ":");
guess = scan.nextInt();
} while (guess < 1 || guess > 15);
这基本上会继续提示用户,直到他们输入一个介于 1 和 15 之间的值。
作为一个可运行的例子...
import java.util.Random;
import java.util.Scanner;
public class GuessMe {
public static void main(String[] args) {
int max = 15;
int guess = 0;
Random generator = new Random();
int answer = generator.nextInt(max) + 1;
Scanner scan = new Scanner(System.in);
System.out.println("I'm thinking of a number between 1 and " + max + ". Guess what is it\n");
do {
do {
System.out.print("Please choose a number between 1 and " + max + ":");
guess = scan.nextInt();
} while (guess < 1 || guess > 15);
if (guess < answer) {
System.out.println("Good guess, but mine is higher");
} else if (guess > answer) {
System.out.println("Good guess, but mine is low");
}
} while (guess != answer);
System.out.println("Good guess, that's right!");
}
}
已更新
严格来说,您不需要内部循环(在本例中),但它确实展示了您如何能够重新提示用户输入单个给定值。
另一种方法可能是使用 if-else
块而不是更直接地检查输入结果。
import java.util.Random;
import java.util.Scanner;
public class GuessMe {
public static void main(String[] args) {
int max = 15;
int guess = 0;
Random generator = new Random();
int answer = generator.nextInt(max) + 1;
Scanner scan = new Scanner(System.in);
System.out.println("I'm thinking of a number between 1 and " + max + ". Guess what is it\n");
do {
System.out.print("Please choose a number between 1 and " + max + ":");
guess = scan.nextInt();
if (guess < 1 || guess > 15) {
System.out.println("You did't enter a valid number, please try again");
} else if (guess < answer) {
System.out.println("Good guess, but mine is higher");
} else if (guess > answer) {
System.out.println("Good guess, but mine is low");
}
} while (guess != answer);
System.out.println("Good guess, that's right!");
}
}
我认为你可以像这样使用递归:
/**
* main business process
* @param MAX the max number
*
* */
public static void guess(int MAX) {
int answer, guess;
Scanner scan = new Scanner (System.in);
Random generator = new Random();
answer = generator.nextInt(MAX) + 1;
guess = scan.nextInt();
if (guess > MAX || guess < 1) {
System.out.println("Please choose a number between 1 and 15.");
//recursion
guess(MAX);
} else if (guess == answer) {
System.out.println("You got it! Good guessing!");
} else {
System.out.println("This isn't correct, sorry!");
System.out.println("The number was " + answer);
}
}
/**
* guessNumber method
*
* */
public static void guessNumber() {
final int MAX = 15;
System.out.println("I'm thinking of a number between 1 and " + MAX + ". Guess what is it: ");
guess(MAX);
}
public static void main(String[] args) {
guessNumber();
}
希望对您有所帮助!