Java 环路难度
从建议问题的答案中获得一些信息,并编辑了我的代码。现在我得到一个|操作符的错误。怎么了?写这篇文章的正确方式是什么Java 环路难度,java,loops,Java,Loops,从建议问题的答案中获得一些信息,并编辑了我的代码。现在我得到一个|操作符的错误。怎么了?写这篇文章的正确方式是什么 public static void main(String[] args) { Scanner input = new Scanner(System.in); String shapeName; do { System.out.println("Please identify the sh
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String shapeName;
do {
System.out.println("Please identify the shape");
System.out.print("Rectangle (Press R) / Circle (Press C): ");
shapeName = input.next();
} while (!shapeName.equals("R") || !shapeName.equals("C"));
好的,你有这样一个概念“要求选择选项,如果没有选择任何可用选项,告诉用户,然后再次提示” 那是一堆工作。所以,制定一个方法
public static String pick(Scanner scanner, String prompt, String... options) {
while (true) {
System.out.println(prompt);
String choice = scanner.next();
for (String option : options) {
if (option.equals(choice)) return choice;
}
System.out.println("Error - that is not an available choice.");
}
}
以及使用:
String choice = pick(scanner,
"Please identify the shape\nRectangle (R) / Circle (C): ",
"R", "C");
在代码中,
while
语句的条件是错误的
替换
while (!shapeName.equals("R") || !shapeName.equals("C"));
与
--或--
while (!shapeName.equals("R") && !shapeName.equals("C"));
如果使用| |
组合条件,则仅当条件的计算结果为false
时,才会检查此组合中的下一个条件,即,一旦条件的计算结果为true
,则不会检查组合中的下一个条件,并且组合的计算结果为true
如果使用和&
组合条件,则仅当条件的计算结果为true
时,才检查此组合中的下一个条件,即,一旦条件的计算结果为false
,则不检查组合中的下一个条件,且组合的计算结果为false
你的情况怎么了?
让我们看看您的条件是如何产生不希望的结果的
当用户输入R
时,您的状况将评估如下
while (!shapeName.equals("R") || !shapeName.equals("C")); => while (false || !shapeName.equals("C")); => while (false || true); => while (true);
while (!shapeName.equals("R") || !shapeName.equals("C")); => while (true || !shapeName.equals("C")); => while (true);
当用户输入C
时,您的状况将评估如下
while (!shapeName.equals("R") || !shapeName.equals("C")); => while (false || !shapeName.equals("C")); => while (false || true); => while (true);
while (!shapeName.equals("R") || !shapeName.equals("C")); => while (true || !shapeName.equals("C")); => while (true);
因此,使用您的条件,尽管用户输入了所需的输入,while
条件强制它返回
现在,尝试使用我在答案中建议的
while
条件做同样的练习。只需将输入中的代码放入循环while(True)
,然后在有效情况下退出(例如,中断)该循环。如果您解释了代码的错误(即它没有退出循环),这将非常有用,因为如果你说你“得到一个错误”,人们期望你得到一个运行时异常或编译时错误。但是回来后需要再次测试以选择执行预期的相关操作,将代码放入while(True)更简单
并使用break
在预期操作生效后退出循环谢谢您提供信息。由于从另一个建议的问题中获得信息,我现在编辑了我的问题。现在是另一个困难……好吧,你没有按照我的建议去做,把这个问题编辑成一个完全不同的问题。使用服务前,请先查看SO指南。谢谢大家!@对不起,下次我会考虑的。但我检查了你的建议。这毫无帮助。感谢您的关注,请使用&&working ok选项。但第二个选项,您使用的| |运算符不起作用。输入R或C时程序退出。但&&选项为ok@BahramAfandi-两个建议条件的行为方式相同且正确,即,如果输入不是C
或R
,它们将强制用户再次输入。如果用户输入C
或R
,他们不会强制用户输入。是的,你是对的,我的错。非常感谢你。解决了的!不客气。