初学者Java:尝试失败后重新开始(尝试包含for循环)

时间:2016-07-07 21:07:52

标签: java for-loop try-catch do-while

如果尝试失败,我希望重新开始。我找到了许多模糊相似情况的答案,但没有找到for循环和我的结构。这样做不是必需的,也不会使我的任务受益,但我只是想这样做。该程序可以按需要运行(是的,这是非常初学的东西)。我已经尝试过用do ... while和for循环,我要么得到无限循环,找不到符号等等。我知道如果我继续尝试我会得到它,我也有一些预感我的错误,但我真的希望有经验的人看看这个并提出建议。

try{                            

  System.out.print("Please enter an integer: ");
  int original = sc.nextInt();

  int entry = Math.abs(original);  

  String str = new Integer(entry).toString();

  int len = str.length();           

  System.out.println();
  System.out.println("The entry is " + len + " digits long.");
  System.out.println();
  System.out.print("The digits entered are: ");

  int runningTotal;  
  int ttl = 0;      

for (int i=1; i<=len; i++){
  System.out.print(str.charAt(i-1) + " "); 
  char num1 = str.charAt(i-1);             
  String num2 = Character.toString(num1);  
  runningTotal = Integer.parseInt(num2);  
  ttl = ttl + runningTotal;
}
System.out.println("\n");
System.out.println("The sum of the digits entered is: " + ttl + "\n");
}
catch (InputMismatchException imeRef){
System.out.println("Data type error: " + imeRef.toString() +"\n"
                    + "No letters or special characters allowed.");
}

3 个答案:

答案 0 :(得分:2)

您真的需要将整个内容放在try..catch块中吗?仅包含容易出错的位。

在任何情况下,此代码都在函数中 - 如果您真的想重新开始出错,请尝试以下操作:

void foo() {
   try {
      doSomeDangerousThing();
   catch(Exception e) {
      foo()
   }
}

当然,这是一个危险的游戏 - 如果它在最后一次通话时出现错误,为什么不在这次通话中,如果没有改变?你可能会创造一个致命的无限循环。除非参数发生变化,否则错误很可能会再次发生。

如果您想一遍又一遍地运行代码,请使用while循环。

答案 1 :(得分:0)

使用while循环

试试这个

while(true){
        try{                            
            Scanner sc = new Scanner(System.in);
            System.out.print("Please enter an integer: ");
            int original = sc.nextInt();
            int entry = Math.abs(original);  

            String str = new Integer(entry).toString();

            int len = str.length();           

            System.out.println();
            System.out.println("The entry is " + len + " digits long.");
            System.out.println();
            System.out.print("The digits entered are: ");

            int runningTotal;  
            int ttl = 0;      

            for (int i=1; i<=len; i++){
                  System.out.print(str.charAt(i-1) + " "); 
                  char num1 = str.charAt(i-1);             
                  String num2 = Character.toString(num1); 
                  runningTotal = Integer.parseInt(num2);  
                  ttl = ttl + runningTotal;
            }
            System.out.println("\n");
            System.out.println("The sum of the digits entered is: " + ttl + "\n");
            break;
        }
        catch (InputMismatchException imeRef){
            System.out.println("Data type error: " + imeRef.toString() +"\n"
                            + "No letters or special characters allowed.");
        }
    }

答案 2 :(得分:0)

尝试制作方法:

public int askForInt() {
    int input;
    try {
        input = sc.nextInt();
    }
    catch(InputMismatchException imeRef) {
        System.out.println(" Try again, etc...");
        askForInt();
    }
    return input;
}

然后在第一次向用户询问整数后,只需调用方法:

System.out.print("Please enter an integer: ");
int original = askForInt();
// proceed