java—如果不使用“return

nsc4cvqm  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(629)

如何从一个void方法中跳出并返回到switch方法?

  1. public static void decrypt() throws FileNotFoundException {
  2. Scanner kbrd = new Scanner(System.in);
  3. System.out.println("Enter Key-file name: ");
  4. String filename = kbrd.nextLine();
  5. System.out.println("Enter Message-filename: ");
  6. String mssgFilename = kbrd.nextLine();
  7. String[] keyArray = loadMessage(filename);
  8. String[] message = loadMessage(mssgFilename);
  9. String[] cipher = xor2(message, keyArray);
  10. String readable = showText(cipher);
  11. System.out.println("The text:" + readable);
  12. return;
  13. }

接下来是切换方法

  1. System.out.println("Encrypt 1.");
  2. System.out.println("Decrypt 2.");
  3. System.out.println("Make Key 3.");
  4. System.out.println("Quit 4.");
  5. Scanner scan = new Scanner(System.in);
  6. String choice = scan.nextLine();
  7. do {
  8. switch (choice) {
  9. case "1":
  10. encrypt();
  11. break;
  12. case "2":
  13. decrypt();
  14. break;
  15. case "3":
  16. makeKey();
  17. break;
  18. }
  19. } while (choice != "4");

问题是,不管我选择什么,它都会停留在那个方法中,尽管最后有return语句,这不应该让我回到switch方法吗?

bis0qfac

bis0qfac1#

您有一个无限循环,因为选项是只读的。你输入3一次,它就会进入一个循环 choice != '4' ,这永远是真的,因为你不会改变你的选择。所以你的函数被反复调用(它确实中断了函数,但它被反复调用)将输入行放入循环中。

xdyibdwo

xdyibdwo2#

将添加另一个选项的能力放入循环中。你正在进入一个无限循环,因为 choice 不会改变。

  1. String choice;
  2. do {
  3. choice = scanner.nextLine();
  4. switch (choice) {
  5. case "1":
  6. encrypt();
  7. break;
  8. case "2":
  9. decrypt();
  10. break;
  11. case "3":
  12. makeKey();
  13. break;
  14. }
  15. } while (!choice.equals("4"));

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

展开查看全部

相关问题