如何在Java中使方法停止并重新开始
这个标题说明了一切,有没有办法阻止一个方法继续,让它从头开始如何在Java中使方法停止并重新开始,java,methods,Java,Methods,这个标题说明了一切,有没有办法阻止一个方法继续,让它从头开始 public class Numbers { static Scanner numberScanner = new Scanner(System.in); public static int answer; public static int insertNumbers(int num1, int num2) { System.out.println("Insert two numbers")
public class Numbers {
static Scanner numberScanner = new Scanner(System.in);
public static int answer;
public static int insertNumbers(int num1, int num2) {
System.out.println("Insert two numbers");
num1 = numberScanner.nextInt();
if (numberScanner.hasNext()) {
num2 = numberScanner.nextInt();
} else {
System.out.println("Equation format incorrect");
//stop method and start over again from "Insert two numbers".
}
answer = num1 + num2;
return answer;
}
}
您可以从该点立即返回,方法是返回int-grom,如果不正确,则返回-1,如果正确,则返回0。在调用代码中,您可以在循环中调用此方法,直到返回代码==0。我会这样做: 读取方法中的数字,无需将其作为参数传递。在循环中读取,直到两个数字都正确输入,然后断开。如果输入错误,请打印信息并重新阅读。对于任何错误的输入,Scanner.nextInt()将抛出
inputmaschException
exception,并在那里使用该输入的新行字符
public static int insertNumbers() {
int num1;
int num2;
while(true) { // loop until correct input.
System.out.println("Insert two numbers");
try {
num1 = numberScanner.nextInt();
num2 = numberScanner.nextInt();
break; // break once correct input is recorded.
} catch (InputMismatchException e) {
System.out.println("Equation format incorrect"); // print message and repeat again for input.
numberScanner.nextLine();
}
}
answer = num1 + num2;
return answer; // return the results.
}
作为返回退出代码或使用循环的替代方法(我认为这一点更为明显,因为您可以使用
continue
),您可以再次调用该函数并阻止原始实例继续:
public int foo(){
//do stuff
if (must_restart){
return foo();
//or, if the function "returns" void: (note that 2 returns/having statements after a return is pointless, this is just an example)
foo();
return;
}
}
我的建议如下: 在else情况下,您只需使用此结构
else{
System.out.println("Equation format incorrect");
return insertNumbers();
}
请注意,代码将持续询问输入,直到输入为两个数字。方法声明中不需要参数,因为您不使用它们这里可以输入什么?如果您正在读取方法中的数字,则无需将其作为参数传递给该方法。