JAVA Do/while循环不返回值



我是新来的stackoverflow和编码。我试图使验证用户输入的方法。用户只允许回答、添加、显示或退出。但是我总是卡在第一个while循环中。我试着把它改成!userChoice.equals..但这并没有奏效。我做错了什么?

public static String userFunction() {
Scanner sc = new Scanner(System.in);
String userChoice = "test";
do {
userChoice = sc.next().toLowerCase();
while (userChoice.equals("add") || userChoice.equals("exit") || userChoice.equals("show")) {
System.out.println("Please fill in add, show or exit");
userChoice = sc.next().toLowerCase();
}
while (!userChoice.equals("add") || !userChoice.equals("show") || !userChoice.equals("exit")) ;
return userChoice;
} while (userChoice == "test");
}

您发布的代码有三个循环-两个"while"循环,以及外部的"do"循环。没有必要使用多个循环。

退一步说,你描述的方法应该:

  • 接受用户输入
  • 检查输入是否"allowed"或否-必须是"add", "show"或"exit">
  • 如果输入是这三个之一,则将其返回给调用者
  • 如果输入是而不是,则向用户显示消息并再次提示
  • 一直这样做,直到用户输入有效的输入

这里有一个方法做这些事情:

public static String getInput() {
Scanner scanner = new Scanner(System.in);
String input;
while (true) {
input = scanner.next().toLowerCase();
if (input.equals("add") || input.equals("show") || input.equals("exit")) {
return input;
} else {
System.out.println("Unsupported input: [" + input + "], enter: add, show, or exit");
}
}
}

下面是一个示例:

String input = getInput();
System.out.println("from getInput(): " + input);
adf
Unsupported input: [adf], enter: add, show, or exit
show
from getInput(): show

相关内容

  • 没有找到相关文章

最新更新