Java InputMismatchException catch?

时间:2015-11-24 17:02:59

标签: java error-handling try-catch inputmismatchexception

我希望能够处理用户输入除Int之外的任何异常的异常,这样它就会抛出一个异常,以后可以处理,并向用户显示一条用户友好的消息,建议输入int

final int FEES=3000;
    String [] user = new String [2];
    String [] password = new String [3];
    int userChoice, sdev, maths, systemAnalysis, cmpArch, menu, studentFees=0, grantFees=0, hundred=0, seventyFive=0, fifty=0, noGrant=0, grantAwarded=0, processed=0, totalStudentFees=0;
    double average;
    String studentName, studentNumber;

    Scanner in=new Scanner(System.in);

    System.out.println("\t\tPlease create your College Grant account");
    System.out.print("Please enter your desired username: ");
    user[0]=in.next();
    System.out.print("\nPlease enter the password for your account: ");
    password[0]=in.next();
    System.out.println("\n\n\t\tSecurity Feature");
    System.out.print("Please enter your username: ");
    user[1]=in.next().toLowerCase();
    System.out.print("\nPlease enter your password: ");
    password[1]=in.next();
    System.out.print("\nPlease re-enter your password: ");
    password[2]=in.next();

    if(user[1].equals(user[0]) && password[1].equals(password[0]) && password[2].equals(password[0])){
        System.out.println("\nPassword has been verified successfully.");
        System.out.println("\n\n\t\t College Grant System");
        System.out.println("1.\t Calculate Grant");
        System.out.println("2.\t Fee Statistics");
        System.out.println("3.\t Grant Category Information");
        System.out.println("4.\t Exit");
        System.out.print("\nEnter your choice: ");
        userChoice=in.nextInt();
        while (userChoice!=1 && userChoice!=2 && userChoice!=3 && userChoice!=4){
            System.out.println("\t Inavlid Choice");
            System.out.println("\n\t\t College Grant System");
            System.out.println("1.\t Calculate Grant");
            System.out.println("2.\t Fee Statistics");
            System.out.println("3.\t Grant Category Information");
            System.out.println("4.\t Exit");
            System.out.print("\nEnter your choice: ");
            userChoice = in.nextInt();
        }

1 个答案:

答案 0 :(得分:3)

这是一个输入循环的快速示例,用于检查输入是否不是数字,或者是否超出范围:

import java.util.Scanner;

public class InputLoop {

    Scanner scan;

    public InputLoop()
    {
        //Initialize number outside of the range, so the while loop condition will be true on its first run.
        int numberToEnter = -1;

        scan = new Scanner(System.in);

        while (numberToEnter < 1 || numberToEnter > 4)
        {
            System.out.print("Enter a number 1 through 4: ");
            try {
                numberToEnter = Integer.parseInt(scan.nextLine());
            } catch (NumberFormatException ex)
            {
                System.out.println("Not a number!");
            }
        }
        System.out.print("Thank you! You entered: " + numberToEnter);
    }
    public static void main(String...args)
    {
        new InputLoop();
    }
}

示例输出:

Enter a number 1 through 4: 12
Enter a number 1 through 4: 16
Enter a number 1 through 4: banana
Not a number!
Enter a number 1 through 4: 2
Thank you! You entered: 2