如何从一个void方法中跳出并返回到switch方法?
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;
}
接下来是切换方法
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");
问题是,不管我选择什么,它都会停留在那个方法中,尽管最后有return语句,这不应该让我回到switch方法吗?
2条答案
按热度按时间bis0qfac1#
您有一个无限循环,因为选项是只读的。你输入3一次,它就会进入一个循环
choice != '4'
,这永远是真的,因为你不会改变你的选择。所以你的函数被反复调用(它确实中断了函数,但它被反复调用)将输入行放入循环中。xdyibdwo2#
将添加另一个选项的能力放入循环中。你正在进入一个无限循环,因为
choice
不会改变。注意,这与被调用的方法无关;这完全由do…while循环调节。