告诉用户输入的数字是偶数还是偶数。我需要输入验证方面的帮助。我需要做的验证是用户不能输入任何数字。尝试在没有try和catch方法的情况下进行验证。
import java.util.Scanner;
public class oddoreven {
public static void main (String [] args) {
Scanner input = new Scanner (System.in);
//declaractions
int num;
//while loop
do{
System.out.println("PLease enter a number to see whether it is even or odd. To end tyype in -99.");
num = input.nextInt();
// input valid
}while(num != -99); // loop ends
// begins the method
public static void is_odd_or_even_number(int number){
int rem = number%2;
\
答案 0 :(得分:1)
您可以调用Scanner.hasNextInt()
来确定下一个输入是否为int
(并消耗其他任何内容)。此外,当输入为break
(或-99
时,您可能会进行无限循环99
,您的代码会对99
进行测试,但您的提示会显示-99
) 。最后,你应该调用你的方法。像,
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num;
do {
System.out.println("Please enter a number to see whether it is "
+ "even or odd. To end type in -99.");
if (input.hasNextInt()) {
num = input.nextInt();
if (num != -99) { // <-- directions say -99.
is_odd_or_even_number(num);
} else {
break;
}
} else {
System.out.printf("%s is not a valid int.%n", input.nextLine());
}
} while (true);
}
答案 1 :(得分:0)
您可以使用regex
检查用户输入的字符串的所有字符是否为数字,
num.matches("[0-9]+") // return true if all characters are digits
或
num.matches("^[0-9]*$") // return true if all characters are digits
但在此之前将num = input.nextint()
更改为num = nextLine()
并将num
更改为String
。如果您不这样做,则无需根据需要验证用户输入。
答案 2 :(得分:0)
您可以使用Scanner.nextLine()来获取字符串输入。然后遍历字符以确保它们都是数字。 (假设只有非负整数)
string rawInput = input.nextLine();
boolean validInput = true;
for (char c : rawInput) {
if (!Character.isDigit(c)) {
validInput = false;
break;
}
}
if (validInput) {
int num == Integer.parseInt(rawInput);
// proceed as normal
}
else {
// invalid input, print out error message
}