Java用户输入错误处理

时间:2015-11-05 11:43:38

标签: java error-handling user-input

我有简单的java程序,它接受3个用户输入,类型为integer,double和string。我想知道对所有这些输入执行错误处理的最佳/最有效的方法,以保持程序运行,通知用户他们输入了错误的输入并再次询问他们。任何帮助将不胜感激。

这是我的代码

    Scanner scan = new Scanner(System.in);
    int inputInt;
    double inputDbl;
    String inputString;


    System.out.print("Please enter a whole number: ");
    inputInt = scan.nextInt();      
    System.out.print("Please enter a decimal number: ");
    inputDbl = scan.nextDouble();
    System.out.print("Please enter a string: ");
    inputString = scan.next().toLowerCase();    

3 个答案:

答案 0 :(得分:1)

boolean validated = false;

// this keeps user locked until he/she provides valid inputs for all variables
while(!validated) {
  //get inputs here
  // ..

  // lastly
  validated = validateLogic(inInt, inDbl, inStr);
}

// keep going

如果要为每个输入单独验证,可以将while循环写入3次。

答案 1 :(得分:1)

将此分割为n方法,其中n是有多少用户输入。

对于每个用户输入,创建一个获取输入的方法:

String getStringInput(){
    System.out.println("Enter input");
    String input = scan.next();

    //check the input to make sure it is correct
    if(input.equals("foo")){
        //if the input is incorrect tell the user and get the new input
        System.out.println("Invalid Input");
        //simply return this method if the input is incorrect.
        return getStringInput();
    }

    //return the input if it is correct
    return input;
}

对于获取输入的main方法,只需调用方法:

void getAll(){
    String stringValue = getStringInput();
}

现在可以轻松获取任意数量的输入并检查是否正确。

答案 2 :(得分:0)

感谢所有投入的人,你们真棒。我选择使用布尔触发器来使用简单的dowhile循环。我之前尝试过使用try catch,但最终编写了大量代码来执行非常基本的输入检查。所以这里没有任何异常处理,我希望这样做不会有必要。希望它不会破坏我

do {
        System.out.print("Please enter a whole number: ");
        if (scan.hasNextInt()){     
        inputInt = scan.nextInt();
        validInput = true;
        } else
            System.out.println("You have entered incorrect input! Please enter a whole number only");
            scan.nextLine();
        } while (validInput == false);  

        validInput = false;

        do {
        System.out.print("Please enter a decimal number: ");
        ......
        ......