【问题标题】:Java - try/catch infinite repeatJava - 尝试/捕获无限重复
【发布时间】:2014-02-26 16:03:58
【问题描述】:

要求:

接受 10 个数字,将它们输入到一个数组中,然后调用一个方法来计算并返回最小值。该程序被认为是防错的,因此当用户输入无效条目时,它会通知用户并重新提示。我正在尝试使用try catch,但是当输入无效条目(即字符)时,扫描仪不会重新提示。

有什么想法吗?

试过了:

//Variables
double [] doubleArray = new double[10];
Scanner input = new Scanner(System.in);

//Prompt
System.out.println("This program will prompt for 10 numbers and display the smallest of the group");

//Get values
for (int i = 0; i < doubleArray.length; i++) {
    try {
        System.out.println("Please enter entry "+ (i+1));
        doubleArray[i] = input.nextDouble();        

    } catch (InputMismatchException e) {
        // TODO: handle exception
        System.out.println("Please enter a rational number");
        i--;
    }
}

//Invoke method and display result
System.out.println("The smallest value is: "+index(doubleArray));

【问题讨论】:

    标签: java try-catch


    【解决方案1】:

    我没有看到对input.nextLine() 的任何调用,这意味着用户输入的\n 没有被消耗。关于scanner.nextLine 使用here 有一个很好的例子。如果你在你的 catch 块中添加一个调用,你应该已经准备好了。

    【讨论】:

      【解决方案2】:

      尝试在您的捕获中调用input.nextLine();。然后\n将从输入中取出,让您输入下一个新数字。

      for(int i = 0; i < doubleArray.length; ++i) {
          try {
              doubleArray[i] = input.nextDouble();
          } catch(Exception e) {
              input.nextLine();
              --i;
          }
      }
      

      【讨论】:

        【解决方案3】:

        尝试类似的方法(并确保使用整行,除非您想允许在同一行输入多个数字

           boolean validEntry = false;
           System.out.println("Enter a rational number: ");
           while (!validEnry) {
             try {
                  double value = input.nextDouble();
                  validEntry = true;
                  doubleArray[i] = value;
             } catch (Exception e) {
                 System.out.println("Entry invalid, please enter a rational number");
             }
           }
        
           ...
        

        【讨论】:

          【解决方案4】:

          您必须丢弃错误输入的数据,在catch 块中添加input.nextLine()

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-03-25
            • 2020-12-16
            • 1970-01-01
            • 2020-12-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-16
            相关资源
            最近更新 更多