如何在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();
}

请注意,代码将持续询问输入,直到输入为两个数字。方法声明中不需要参数,因为您不使用它们

这里可以输入什么?如果您正在读取方法中的数字,则无需将其作为参数传递给该方法。