当我 运行 这段代码时,它不允许我输入我的扫描仪。我是否正确使用扫描仪?
When I run this code it is not allowing me to input to my scanner. Am I using the Scanner properly?
当我 运行 代码时,我无法将代码输入扫描仪并继续按我想要的方式输入代码。有人可以帮我一些建议吗?我已成功导入 java.util.Scanner。顺便说一句,我确实调用了原始程序中的方法,我只是在发布问题之前将其删除。我正在使用 BlueJ。
public class Instructions extends ConsoleProgram
{
public boolean question(String prompt) {
Scanner s = new Scanner(System.in);
println(prompt);
String str = s.next();
boolean result = true;
while(!(str.equals("yes") || str.equals("no"))) {
str = s.next();
println("enter yes or no");
}
if (str.equals("yes")) {
result = true;
} else if (str.equals("no")) {
result = false;
}
return result;
}
Am I using the Scanner properly?
这不是问题所在。真正的问题是应用程序逻辑中的直接错误。这个条件:
!(str.equals("yes") && str.equals("no"))
永远不会是false
。一个字符串不能同时等于 "yes"
和 "no"
。因此,您的 while
循环无法终止。
更新
编辑后,您的代码应该或多或少可以工作。但这不太对。
while(!(str.equals("yes") || str.equals("no"))) {
str = s.next();
println("enter yes or no");
}
1) 在提示输入之前,您正在阅读下一个输入标记。
2) 您没有使用用户刚刚输入的行的第一个标记之后的剩余字符。
这样更好
while(!(str.equals("yes") || str.equals("no"))) {
s.nextLine();
println("enter yes or no");
str = s.next();
}
我建议你回去仔细阅读 Scanner
class .
的 javadoc
也有可能new Scanner(System.in)
是错误的。这通常是正确的做法,但您的要求 可能 需要您从其他输入流读取使用输入。
当我 运行 代码时,我无法将代码输入扫描仪并继续按我想要的方式输入代码。有人可以帮我一些建议吗?我已成功导入 java.util.Scanner。顺便说一句,我确实调用了原始程序中的方法,我只是在发布问题之前将其删除。我正在使用 BlueJ。
public class Instructions extends ConsoleProgram
{
public boolean question(String prompt) {
Scanner s = new Scanner(System.in);
println(prompt);
String str = s.next();
boolean result = true;
while(!(str.equals("yes") || str.equals("no"))) {
str = s.next();
println("enter yes or no");
}
if (str.equals("yes")) {
result = true;
} else if (str.equals("no")) {
result = false;
}
return result;
}
Am I using the Scanner properly?
这不是问题所在。真正的问题是应用程序逻辑中的直接错误。这个条件:
!(str.equals("yes") && str.equals("no"))
永远不会是false
。一个字符串不能同时等于 "yes"
和 "no"
。因此,您的 while
循环无法终止。
更新
编辑后,您的代码应该或多或少可以工作。但这不太对。
while(!(str.equals("yes") || str.equals("no"))) {
str = s.next();
println("enter yes or no");
}
1) 在提示输入之前,您正在阅读下一个输入标记。
2) 您没有使用用户刚刚输入的行的第一个标记之后的剩余字符。
这样更好
while(!(str.equals("yes") || str.equals("no"))) {
s.nextLine();
println("enter yes or no");
str = s.next();
}
我建议你回去仔细阅读 Scanner
class .
也有可能new Scanner(System.in)
是错误的。这通常是正确的做法,但您的要求 可能 需要您从其他输入流读取使用输入。