当发生异常时,我想将用户返回到它所在的代码行,而不是让他们再次输入所有内容。有一个简单/简单的方法来做到这一点?
Scanner input = new Scanner(System.in);
double initialAmount = 0.0;
String type = "";
double interestRate = 0.0;
boolean finished = false;
try{
System.out.print("\nInitial Amount: ");
input = new Scanner(System.in);
initialAmount = input.nextDouble();
System.out.print("Compound/Simple: ");
input = new Scanner(System.in);
type = input.nextLine();
if (!type.equalsIgnoreCase("compound") && !type.equalsIgnoreCase("simple")){
System.out.println(type);
throw new IllegalArgumentException();
}
System.out.print("Interest Rate: ");
input = new Scanner(System.in);
interestRate = input.nextDouble();
finished = true;
}
catch(Exception e) {
System.out.print("\n----- Please check that you have entered a corrrect value! -----\n");
createUserInvestment();
}
Investment invest = new Investment(interestRate, initialAmount, type);
return invest;
答案 0 :(得分:1)
您似乎正在尝试验证输入,只是循环直到用户提供有效值。更好的是不要抛出异常,因为这是一个错误指示,你不能回到完全相同的行,程序是一个流...在循环中获取输入,检查是否有效,打破循环有效时。
答案 1 :(得分:1)
没有必要在代码中抛出任何异常。需要try / catch的唯一代码是nextDouble()赋值。这可能会导致错误,因为输入并不总是双倍,但分配字符串更容易,并且不需要捕获。要返回到该行,请在while循环中围绕要重复的行。在循环中,使用if语句检查输入。获得所需的输入后,使用break关键字结束循环。这将继续分配变量,直到它被分配到您想要的变量。 警惕不必要地使用例外。例外是对象,因此内存更昂贵。因此,如果您无法使用程序的逻辑处理错误,请仅使用例外。我并不是说你不应该使用异常,只是你应该只在if语句无法处理错误的场景中使用它们。