猜测数字的 InputMismatchException
InputMismatchException for guess number
我正在做一个猜谜游戏,我可以输入 1-100,但是如果我在第一次 运行 程序时输入一个字母,我就只能接受数字,它会给我错误,立即执行程序image herebut if ityped number after I start the program and type letter next it give me a wrong message it should only display message saying "invalid input".image here任何建议谢谢。
package m1;
import java.util.InputMismatchException;
import java.util.Scanner;
public class M1{
public static void main(String[] args) {
Scanner Scanner = new Scanner(System.in);
int between = 100;
int secretNumber = (int)(Math.random()*between);
int inputNum = 0;
int guesses = 0;
System.out.println("Please enter your guess: ");
inputNum = Scanner.nextInt();
guesses++;
while (inputNum != secretNumber) {
try {
// number too high or too low
if (inputNum > 100 || inputNum < 1) {
System.out.println("Out of Range!");
System.out.println("Enter a guess between 1 and " + between + ".");
inputNum = Scanner.nextInt();
}
// less than secretNumber
if (inputNum < secretNumber) {
System.out.println("Too Low...Try Again!");
inputNum = Scanner.nextInt();
guesses++;
}
// greater than secretNumber
if (inputNum > secretNumber) {
System.out.println("Too High...Try Again!");
inputNum = Scanner.nextInt();
guesses++;
}
}
catch(InputMismatchException e){
System.out.println("Invalid Input");
Scanner.next();
}
}
System.out.println("\nWell done! The secret number was " + secretNumber + "." + "\nYou took " + guesses + " guesses.");
}
}
- 一般在java中命名变量名在大多数情况下使用camelCase。
- 您实际上不需要捕获任何异常,因为如果
scanner.hasNextInt()
是 false
,您可以简单地执行 scanner.next()
。这次提示用户具体输入一个数字。
试试下面的代码here!
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int between = 100;
int secretNumber = (int)(Math.random() * between);
int guesses = 0;
System.out.println("Lec's Guessing Game");
System.out.println("====================");
System.out.print("Please enter a guess between 1 and " + between + "(inclusive):");
while(scanner.hasNext()){
if(scanner.hasNextInt()){
int inputNum = scanner.nextInt();
guesses++;
if(inputNum == secretNumber) {
System.out.println("\nWell done! The secret number was " + secretNumber + "." + "\nYou took " + guesses + " guesses.");
}
// number too high or too low
if (inputNum > between || inputNum < 1) {
System.out.println("Out of Range!");
System.out.print("Enter a guess between 1 and " + between + "(inclusive):");
}
// less than secretNumber
if (inputNum < secretNumber) {
System.out.println("Too Low...Try Again!");
System.out.print("Enter a guess between 1 and " + between + "(inclusive):");
}
// greater than secretNumber
if (inputNum > secretNumber) {
System.out.println("Too High...Try Again!");
System.out.print("Enter a guess between 1 and " + between + "(inclusive):");
}
} else{
System.out.print("ERROR: Invalid Input");
System.out.print("Please enter a number: ");
scanner.next();
}
}
}
}
我正在做一个猜谜游戏,我可以输入 1-100,但是如果我在第一次 运行 程序时输入一个字母,我就只能接受数字,它会给我错误,立即执行程序image herebut if ityped number after I start the program and type letter next it give me a wrong message it should only display message saying "invalid input".image here任何建议谢谢。
package m1;
import java.util.InputMismatchException;
import java.util.Scanner;
public class M1{
public static void main(String[] args) {
Scanner Scanner = new Scanner(System.in);
int between = 100;
int secretNumber = (int)(Math.random()*between);
int inputNum = 0;
int guesses = 0;
System.out.println("Please enter your guess: ");
inputNum = Scanner.nextInt();
guesses++;
while (inputNum != secretNumber) {
try {
// number too high or too low
if (inputNum > 100 || inputNum < 1) {
System.out.println("Out of Range!");
System.out.println("Enter a guess between 1 and " + between + ".");
inputNum = Scanner.nextInt();
}
// less than secretNumber
if (inputNum < secretNumber) {
System.out.println("Too Low...Try Again!");
inputNum = Scanner.nextInt();
guesses++;
}
// greater than secretNumber
if (inputNum > secretNumber) {
System.out.println("Too High...Try Again!");
inputNum = Scanner.nextInt();
guesses++;
}
}
catch(InputMismatchException e){
System.out.println("Invalid Input");
Scanner.next();
}
}
System.out.println("\nWell done! The secret number was " + secretNumber + "." + "\nYou took " + guesses + " guesses.");
}
}
- 一般在java中命名变量名在大多数情况下使用camelCase。
- 您实际上不需要捕获任何异常,因为如果
scanner.hasNextInt()
是false
,您可以简单地执行scanner.next()
。这次提示用户具体输入一个数字。
试试下面的代码here!
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int between = 100;
int secretNumber = (int)(Math.random() * between);
int guesses = 0;
System.out.println("Lec's Guessing Game");
System.out.println("====================");
System.out.print("Please enter a guess between 1 and " + between + "(inclusive):");
while(scanner.hasNext()){
if(scanner.hasNextInt()){
int inputNum = scanner.nextInt();
guesses++;
if(inputNum == secretNumber) {
System.out.println("\nWell done! The secret number was " + secretNumber + "." + "\nYou took " + guesses + " guesses.");
}
// number too high or too low
if (inputNum > between || inputNum < 1) {
System.out.println("Out of Range!");
System.out.print("Enter a guess between 1 and " + between + "(inclusive):");
}
// less than secretNumber
if (inputNum < secretNumber) {
System.out.println("Too Low...Try Again!");
System.out.print("Enter a guess between 1 and " + between + "(inclusive):");
}
// greater than secretNumber
if (inputNum > secretNumber) {
System.out.println("Too High...Try Again!");
System.out.print("Enter a guess between 1 and " + between + "(inclusive):");
}
} else{
System.out.print("ERROR: Invalid Input");
System.out.print("Please enter a number: ");
scanner.next();
}
}
}
}