用户输入验证时遇到问题



这是我正在开发的程序的一小部分。我正在尝试检查用户输入的号码是否正确。

他们有五个选择可供选择,因此他们可以点击 1、2、3、4 或 5。然后按回车键。

因此,我想检查以确保用户没有在 1 或 5 <>中键入任何内容。我让那部分工作...但我只想知道是否有更简单的方法可以做到这一点,然后从我在下面的代码中所做的。

下一部分是我还想确保用户不输入字母。 比如"gfgfadggdagdsg"作为选择。

这是我正在处理的部分的代码....

public void businessAccount()
    {

        int selection;
        System.out.println("nATM main menu:");
        System.out.println("1 - View account balance");
        System.out.println("2 - Withdraw funds");
        System.out.println("3 - Add funds");
        System.out.println("4 - Back to Account Menu");
        System.out.println("5 - Terminate transaction");
        System.out.print("Choice: ");
        selection = input.nextInt();
            if (selection > 5){
            System.out.println("Invalid choice.");
            businessAccount();
        }
            else if (selection < 1){
                System.out.println("Invalid choice.");
                businessAccount();
            }
            else {
        switch(selection)
        {
        case 1:
            viewAccountInfo3();
            break;
        case 2:
            withdraw3();
            break;
        case 3:
            addFunds3();
            break;
        case 4:
            AccountMain.selectAccount();
            break;
        case 5:
            System.out.println("Thank you for using this ATM!!! goodbye");
        }
            }
    }
您可以通过

添加default案例来摆脱检查< 1> 5

try{
     selection = input.nextInt();        
     switch(selection){
      case 1:
          viewAccountInfo3();
          break;
      case 2:
          withdraw3();
          break;
      case 3:
          addFunds3();
          break;
      case 4:
          AccountMain.selectAccount();
          break;
      case 5:
          System.out.println("Thank you for using this ATM!!! goodbye");
          break;
      default:             
          System.out.println("Invalid choice.");
          businessAccount();
      }
}catch(InputMismatchException e){
    //do whatever you wanted to do in case input is not an int
}

使用BufferedReader你可以做这样的事情:

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
int selection = 0;
try{
    selection = Integer.parseInt(s);
    if(selection > 5 || selection < 1){
        System.out.println("Invalid choice.");
        businessAccount();
    }else{
        // your switch code here
    }
    // you can use @Nishant's switch code here. it is obviously better: using switch's default case.
}catch(NumberFormatException ex){
    // throw new Exception("This is invalid input"); // or something like that..
    System.out.println("Invalid choice.");
    businessAccount();
}

希望有帮助。

注意:您必须import java.lang.NumberFormatException import java.io.InputStreamReaderimport java.io.BufferedReader

使用开关大小写,当您从特定中选择时,它会更好、更快速地 if 语句

另一种方法是使用正则表达式来使其工作。假设你有一个字符串 x 那么

字符串 x = "某物";

if(x.matches("regex")){

}

另一种方法是用尝试捕获包围。

相关内容

  • 没有找到相关文章

最新更新