如果没有"返回",如何打破void方法

rec*_*ons 1 java break switch-statement

如何摆脱void方法并返回切换方法?

    public static void decrypt() throws FileNotFoundException {
    Scanner kbrd = new Scanner(System.in);
    System.out.println("Enter Key-file name: ");
    String filename = kbrd.nextLine();
    System.out.println("Enter Message-filename: ");
    String mssgFilename = kbrd.nextLine();
    String[] keyArray = loadMessage(filename);
    String[] message = loadMessage(mssgFilename);
    String[] cipher = xor2(message, keyArray);
    String readable = showText(cipher);
    System.out.println("The text:" + readable);
    return;
}
Run Code Online (Sandbox Code Playgroud)

然后这是切换方法

    System.out.println("Encrypt  1.");
    System.out.println("Decrypt  2.");
    System.out.println("Make Key 3.");
    System.out.println("Quit     4.");
    Scanner scan = new Scanner(System.in);
    String choice = scan.nextLine();

    do {
        switch (choice) {
        case "1":
            encrypt();
            break;
        case "2":
            decrypt();
            break;
        case "3":
            makeKey();
            break;

        }

    } while (choice != "4");
Run Code Online (Sandbox Code Playgroud)

问题是,无论我选择什么,它都保留在那个方法中,尽管最后返回语句,不应该让我回到切换方法吗?

Mak*_*oto 6

能够在循环中添加另一个选择.您目前正在进入无限循环,因为choice不会改变.

String choice;
do {
    choice = scanner.nextLine();
    switch (choice) {
        case "1":
            encrypt();
            break;
        case "2":
            decrypt();
            break;
        case "3":
            makeKey();
            break;
    } 
} while (!choice.equals("4"));
Run Code Online (Sandbox Code Playgroud)

注意这与被调用的方法无关; 这完全由do ... while循环调节.