如果尝试失败,我希望重新开始。我找到了许多模糊相似情况的答案,但没有找到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.");
}
答案 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