我该如何进行输入验证?

时间:2017-02-05 00:04:06

标签: java

告诉用户输入的数字是偶数还是偶数。我需要输入验证方面的帮助。我需要做的验证是用户不能输入任何数字。尝试在没有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;


      \

3 个答案:

答案 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
}