我正在编写一些Java代码,如果发现异常,我想循环回早期的方法。
以下是我的代码的简化版本:
public class classA
{
public static void main(String[] args)
{
int number1 = askUserForFavoriteSum();
int number2 = askUserForAnotherNumber();
}
public static int askUserForFavoriteSum()
{
int firstFavorite;
int secondFavorite;
int favoriteSum
System.out.println("What is your first favorite number?");
firstFavorite = classB.getIntFromConsole();
System.out.println("What is your second favorite number?");
secondFavorite = classB.getIntFromConsole();
favoriteSum = firstFavorite + secondFavorite;
return favoriteSum;
}
public static int askUserForAnotherNumber()
{
int number;
System.out.println("What is another number?");
number = classB.getIntFromConsole();
return number;
}
}
public class classB
{
public static int getIntFromConsole()
{
Scanner scanner = new Scanner(System.in)
int value;
try
{
value = Integer.valueOf(scanner.nextLine());
}
catch (NumberFormatException e) //Occurs when the input string cannot cleanly be converted to an int.
{
System.out.println("ERROR: Invalid input! Please enter a whole number.");
}
return value;
}
}
例如,鉴于上面的两个类,我希望发生以下情况:
在做了一些研究之后,我发现许多人都使用Strategy Design Pattern,但是,这并不适合我,因为我的类中有动态变量。方法和接口不能很好地适应动态变量
在其他情况下,一些开发人员传递“Callable< MethodReturnType>”参数到我们的“getIntFromConsole”方法的等价物中,并调用镜像传入方法的未来方法。这种方法似乎可行,但它需要我添加一个新的抽象层。
有没有一种方法可以简单地从classA调用以前的方法调用我的getIntFromConsole方法,而不添加抽象层或接口?
答案 0 :(得分:2)
只需将其更改为循环
即可public static int getIntFromConsole()
{
Scanner scanner = new Scanner(System.in)
int value;
while (true) {
try
{
value = Integer.valueOf(scanner.nextLine());
break;
}
catch (NumberFormatException e)
{
System.out.println("ERROR: Invalid input! Please enter a whole number.");
}
}
return value;
}