2

私のプログラムでは、ユーザーはやりたいことを選択してから、選択肢の横にある数字を押してからEnterキーを押す必要があります。

現在、選択できない数字はエラーになるようにしていますが、ユーザーが「fadhahafvfgfh」などの文字を入力した場合にエラーが表示されるようにしたいと考えています。

これが私のコードです...

import java.util.Scanner;

public class AccountMain {


    public static void selectAccount(){


        System.out.println("Which account would you like to access?");
        System.out.println();
        System.out.println("1 = Business Account ");
        System.out.println("2 = Savings Account");
        System.out.println("3 = Checkings Account");
        System.out.println("4 = Return to Main Menu");

        menuAccount();


    }

    public static void menuAccount(){

        BankMain main = new BankMain();
        BankMainSub sub = new BankMainSub();
        BankMainPart3 main5 = new BankMainPart3();

        Scanner account = new Scanner(System.in);

        int actNum = account.nextInt();

        if (actNum == 1){

            System.out.println("*Business Account*");
            sub.businessAccount();
        }

        else if (actNum == 2){

            System.out.println("*Savings Account*");
            main.drawMainMenu();
        }

        else if (actNum == 3){

            System.out.println("*Checkings Account*");
            main5.checkingsAccount();
        }

        else if (actNum == 4){
            BankMain.menu();

        }

    }
}
4

5 に答える 5

5

これにはScanner#hasNextInt()を使用できます。

if(account.hasNextInt())
  account.nextInt();

このスキャナの入力の次のトークンが、nextInt() メソッドを使用して指定された基数の int 値として解釈できる場合、true を返します。スキャナは入力を超えて進みません。

ユーザーが有効に入力しない場合は、次のようにさようなら、また次回と言うことができます。

    int actNum = 0;
    if(account.hasNextInt()) {
        //Get the account number 
        actNum = account.nextInt();
    }
    else
    {
        return;//Terminate program
    }

それ以外の場合は、エラー メッセージを表示して、ユーザーに有効なアカウント番号を再試行するように依頼できます。

    int actNum = 0;
    while (!account.hasNextInt()) {
        // Out put error
        System.out.println("Invalid Account number. Please enter only digits.");
        account.next();//Go to next
    }
    actNum = account.nextInt();
于 2012-09-27T05:49:05.543 に答える
2
Scanner account = new Scanner(System.in);
int count = 0;
while (true and count < 3) {
    if (!account.hasNextInt()) {
        int actNum = account.nextInt();
        break;
    } else {
         System.out.println("Enter an integer");
         count++;
         account.next();
    }
}
于 2012-09-27T05:55:24.113 に答える
0

Scanner.hasNextInt()またはを使用できますInteger.parseInt()

Scanner account = new Scanner(System.in);
String actNum = account.next();
try {
    Integer.parseInt(actNum);
} catch(ParseException ex) {
    sysout("please enter only numeric values")
}
于 2012-09-27T05:59:37.967 に答える
0

Scanner には、次のトークンが整数の場合に true を返すhasNextInt()関数があります。nextInt()そのため、検証を呼び出す前にhasNextInt()true の場合。失敗した場合は、ユーザーに整数を入力するように求めるメッセージを表示します。整数は必ずしも必要な範囲に収まる必要はないことに注意してください。そのためelse、ユーザーが入力した数値が無効であることをユーザーに通知する最終的なものがあることも確認してください。

ヒント: Switch Case を使用してください。

于 2012-09-27T05:52:03.867 に答える