2

在我的程序中,用户必须选择他们想要做的事情,然后点击选项旁边的数字,然后点击回车。

现在我有它,所以任何不是选择的数字都会出错,但现在我想确保如果用户输入字母,例如“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 回答
1

我认为公认的答案是正确的,但我们应该在代码中使用异常处理等 java 特性

// 所以我们的代码应该是这样的

public static void main(String[] args) {

    int choice=0;
    Scanner scanner = new Scanner(System.in);
    StringReverse objReverse = new StringReverse();

    System.out.println("Menu");
    System.out.println("1.Reverse String");
    System.out.println("2.Exit");

    do {
            System.out.println("Enter your choice");
            try {
                choice = scanner.nextInt();
                switch(choice) {

                     case 1 :
                            System.out.println("Enter the string to reverse");
                            String inputString = new String();
                            inputString = scanner.next();
                            String reversedString = objReverse.reverse(inputString );
                            System.out.println("Reversed String is " + reversedString);
                            break;

                     case 2 :
                            System.out.println("Exiting...");
                            return;

                     default :
                            System.out.println("Default choice");
                            break;
               }
            } catch(Exception e) {
                    System.out.println("Please enter valid integer input");
                    scanner.next();
            }
   } while(choice != 2);
}
于 2016-01-21T05:05:46.167 回答
0

Scanner 有一个hasNextInt()函数,如果下一个标记是整数,则返回 true。所以在调用之前nextInt()验证是否hasNextInt()为真。如果失败,向用户显示一条消息,要求他输入一个整数。注意,Integer 不一定需要在您要求的范围内,因此请确保您还有一个 finalelse通知用户他输入的数字无效。

提示:使用 Switch Case。

于 2012-09-27T05:52:03.867 回答
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 回答