我想知道如何为用户输入进行类型检查。在这里,我有一个简单的测试来检查用户输入是否介于1和10之间。我想设置它以便用户也可以输入一个字母,主要是因为我可以使用输入'q'来退出程序。 / p>
是否有扫描仪的一部分可以打字检查?我的想法是有一个if语句:如果用户输入类型为int continue,如果它不是int类型,检查是否为q退出程序,否则输出这是一个错误。下面是我到目前为止,它会在输入数字时抛出一个表达式,因为类型不匹配。
public static void main(String[] args) {
//Create new scanner named Input
Scanner Input = new Scanner(System.in);
//Initialize Number as 0 to reset while loop
int Number = 0;
do
{
//Ask user to input a number between 1 and 10
System.out.println("At anytime please press 'q' to quit the program.");
System.out.println();
System.out.print("Please enter a number between 1 and 10:");
Number = Input.nextInt();
if (Number == 'Q'|| Number == 'q')
{
System.out.println("You are now exiting the program");
}
else if (Number >= 1 && Number <= 10)
{
System.out.println("Your number is between 1 and 10");
}
else
{
System.out.println("Error: The number you have entered is not between"
+ " 1 and 10, try again");
}
}
//Continue the loop while Number is not equal to Q
while (Number != 'Q' & Number != 'q');
}
}
感谢大家的回复。我有点新,所以try语句对我来说是新的,但看起来它会起作用(似乎有点自我解释它的作用)。我将更多地研究它的使用并正确实现它。
答案 0 :(得分:1)
我会使用nextLine()
和parseInt()
来查看它是否为int
:
int Number;
String test = "";
boolean isNumber = false;
......
test = Input.nextLine();
try
{
Number = Integer.parseInt(test);
isNumber = true;
}
catch(NumberFormatException e)
{
isNumber = false;
}
if(isNumber)
{
if (Number >= 1 && Number <= 10)
{
System.out.println("Your number is between 1 and 10");
}
else
{
System.out.println("Error: The number you have entered is not between"
+ " 1 and 10, try again");
}
}
else
{
if (test.equalsIgnoreCase("q"))
{
System.out.println("You are now exiting the program");
}
}
.........
while (!test.equalsIgnoreCase("q"));
答案 1 :(得分:1)
试试这个
Scanner Input = new Scanner(System.in);
//Initialize Number as 0 to reset while loop
String Number = "0";
do {
try {
//Ask user to input a number between 1 and 10
System.out.println("At anytime please press 'q' to quit the program.");
System.out.println();
System.out.print("Please enter a number between 1 and 10:");
Number = Input.next();
if (Number.equalsIgnoreCase("q")) {
System.out.println("You are now exiting the program");
} else if (Integer.valueOf(Number) >= 1 && Integer.valueOf(Number) <= 10) {
System.out.println("Your number is " + Number);
} else {
System.out.println("Error: The (" + Number + ") is not between 1 and 10, try again");
}
} catch (NumberFormatException ne) {
System.out.println("Error: The (" + Number + ") is not between 1 and 10, try again");
} catch (Exception e) {
System.out.println(e.getMessage());
}
} //Continue the loop while Number is not equal to Q
while (!Number.equalsIgnoreCase("q"));
答案 2 :(得分:0)
将输入作为字符串读入,以检查Q / q的输入。然后,您可以通过以下方式从输入字符串解析为整数,捕获潜在的NumberFormatExceptions。
String input = "5"
try {
int number = Integer.parseInt(input);
} catch (NumberFormatException e) {
System.out.println("Not a number!")
}
或类似的东西。
答案 3 :(得分:0)
您可以通过这种方式检查它是否int
:
String inputArg = Input.next();
private boolean isInt(String inputArg){
boolean isInt = true;
try {
Integer.parseInt(inputArg);
} catch(NumberFormatException e) {
isInt = false;
}
return isInt;
}
其他方式是使用regular expressions
答案 4 :(得分:0)
找到这段代码检查一下,它对我有用。
[Authorize]
答案 5 :(得分:-1)
您可以将输入作为String获取,然后在所述String上使用正则表达式匹配。
String txt = Input.nextLine();
if(txt.matches("[0-9]+") // We have a number
{
// Safe to parse to number
}
else if(txt.matches("[A-Za-z]+") // We have alphabeticals
{
// Check for various characters and act accordingly (here 'q')
}