2

これは、私が取り組んでいる私のプログラムの小さな部分です。ユーザーが正しい番号を入力したかどうかを確認しようとしています。

5 つの選択肢から選択できるので、1、2、3、4、または 5 のいずれかをヒットできます。次に、Enter キーを押します。

したがって、ユーザーが < 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");
        }
            }
    }
4

4 に答える 4

7

ケースを追加することで、チェックを省略でき< 1ます。> 5default

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
}
于 2012-09-27T04:42:53.767 に答える
0

特定からの選択をチェックする場合は、 switch ケースを使用する方が適切で、 if ステートメントの速度が向上します。

于 2012-09-27T04:59:46.743 に答える
0

you を使用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

于 2012-09-27T04:45:53.100 に答える
-1

別の方法として、正規表現を使用して機能させることもできます。文字列 x があるとします。

文字列 x = "何か";

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

}

これを行う別の方法は、try catch で囲むことです。

于 2012-09-27T04:37:19.040 に答える