我正在尝试创建一个 while 循环,该循环会迭代直到用户输入 cat 或 dogs。然后,程序将继续收集宠物的信息。根据我的打印测试,当他们输入 cat 或dog 时,它会更改变量,但循环不会结束。
petType 变量默认设置为空字符串。
String petType = "";
while(petType != "cat" || petType != "dog") {
System.out.println("Dog or cat? ");
petType = fetch.next().toLowerCase();
System.out.println("You typed " + petType);
}
System.out.println("type: " + petType);
我试图在循环中中断:
while(petType != "cat" || petType != "dog") {
System.out.println("Dog or cat? ");
petType = fetch.next().toLowerCase();
System.out.println("You typed " + petType);
break;
}
System.out.println("type: " + petType);
但这会导致循环结束,即使答案是错误的。将中断放在大括号之外会返回错误。
我也尝试过这个:
boolean canBoard = false;
while(canBoard = false) {
System.out.println("Pet type? ");
petType = fetch.next().toLowerCase();
System.out.println("You typed " + petType);
if(petType == "cat" || petType == "dog") {
canBoard = true;
}
}
System.out.println("type: " + petType);
但是,程序在没有输入和返回类型的情况下将布尔值设置为 true:没有 petType 输出。
我尝试改变||到 && 因为这是类似问题的修复。它继续循环。
对于我的最终测试,我返回到原始循环并将输入更改为“cat”;而不是允许用户输入。这导致了无限循环。输入dog 或cat 会导致循环继续,而在&& 循环中输入dog cat 会导致循环在允许输入之前重复两次。
我很茫然。
您面临的问题与 while 循环中的条件有关。条件 petType != "cat" || petType != "dog" 将始终评估为 true,因为 petType 不能同时为“cat”和“dog”。因此,循环将无限期地继续下去。
要解决此问题,您需要在循环条件中使用逻辑 AND (&&) 运算符,而不是逻辑 OR (||) 运算符。此外,在比较字符串时,您应该使用 equals() 方法而不是 ==,因为 == 检查引用相等性,而不是字符串的内容。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner fetch = new Scanner(System.in);
String petType = "";
while (!petType.equals("cat") && !petType.equals("dog")) {
System.out.println("Dog or cat? ");
petType = fetch.next().toLowerCase();
System.out.println("You typed " + petType);
}
System.out.println("Type: " + petType);
}
}
现在,循环将继续询问宠物类型,直到用户输入“猫”或“狗”。一旦用户输入“猫”或“狗”,循环就会退出,程序将继续到收集宠物信息的下一部分。 equals() 方法确保正确比较字符串的内容,并且循环按预期运行。