如果用户输入一个字母而不是数字告诉他们它不是一个数字
问题描述:
我在做一个猜谜游戏,所有的代码工作正常,除了我希望他们做一个数字来猜测之间,我不能似乎弄清楚如何使它如此,以便如果用户输入一个像“d”而不是像“15”这样的数字的信件,它会告诉他们他们不能这样做。 代码:如果用户输入一个字母而不是数字告诉他们它不是一个数字
import java.util.Scanner;
import java.util.Random;
public class GuessingGame {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random rand = new Random();
while (true) {
System.out.print("Pick a number: ");
int number = input.nextInt();
if (number != int) {
System.out.println("That's not a number");
} else if (number == int) {
int random = rand.nextInt(number);
break;
}
}
System.out.println("You have 5 attempts to guess the number or else you fail. Goodluck!");
System.out.println("");
System.out.println("Type 'begin' to Begin!");
System.out.print("");
String start = input.next();
if (start.equals("begin")) {
System.out.print('\f');
for(int i=1; i<6; i++) {
System.out.print("Enter a number between 1-" + number + ": ");
int number = input.nextInt();
if (number > random) {
System.out.println("Too Big");
System.out.println("");
} else if (number < random) {
System.out.println("Too Small");
System.out.println("");
} else if (number == random) {
System.out.print('\f');
System.out.println("Correct!");
break;
}
if (i == 5) {
System.out.print('\f');
System.out.println("You have failed");
System.out.println("Number Was: " + random);
}
}
} else if (start != "begin") {
System.out.print('\f');
System.out.println("Incorrect Command");
System.out.println("Please Exit Console And Retry");
}
}
}
答
使用尝试捕捉
例如 尝试{ INT A = sc.nextInt(); (例外e){ } catch(Exception e){ System.out.println(“not an integer”); }
答
你可以使用nextLine()
代替nextInt()
并检查出未来字符串,如果它matches()
正则表达式[1-9] [0-9] *,然后解析符合Integer.valueOf(str)
。
像:
String str=input.nextLine();
int i=0;
if(str.matches("[1-9][0-9]*"){
i=Integer.valueOf(str);
} else {
System.out.println("This is not allowed!");
}
我希望它能帮助。
+1
或者,您可以'尝试'做'i = Integer.valueOf(str)'并捕获'NumberFormatException'。 – Cinnam
答
做这样的事情:
Scanner scan = new Scanner(System.in);
while(!scan.hasNextInt()) { //repeat until a number is entered.
scan.next();
System.out.println("Enter number"); //Tell it's not a number.
}
int input = scan.nextInt(); //Get your number here
你为什么不介绍了当你把坏的输入和地想想你要改变它会发生什么?你如何一般地阅读一些东西? – ergonaut
'(number!= int)'和'(number == int)'是错误的语法。您正在使用数据类型作为变量。 – YoungHobbit