如果 Java 包含相似的比较,为什么要跳过 if 子句?
Why is Java skipping an if clause if they contain similar comparisons?
所以,这周我才开始接触 Java,我发现了一些很奇怪的东西。我将添加代码,然后引导您完成。
import java.util.Scanner;
public class kids
{
public static void main(String[] args)
{
System.out.println("How old are you, doll?");
Scanner scanner = new Scanner(System.in);
int age = scanner.nextInt();
System.out.println("Doggie lover or a cat person?");
String animal = scanner.nextLine();
if(age < 18 && animal.contains("dog")) // 1st comparison
{
System.out.println("Hello cutie, welcome");
}
else if(age < 18 && animal.contains("cat")) // 2nd comparison
{
System.out.println("Oh, hi"); // This statement gets skipped
}
else if(age < 18 && animal.contains("cat")); // 3rd comparison
{
System.out.println("Hiya, Doggie lover!");
}
}
}
我在这里附上了我的输出
Output
所以,我给字符串 animal 输入了 "dogcat"。很明显,至少对我来说,三个比较应该 return TRUE 但我的输出却另有说明。似乎只有第一次和第三次比较 return TRUE 但很明显,如果第三次比较 return 为 TRUE,因为它包含字符串“cat”,所以第二次比较也是如此。为什么 Java 在这里跳过我的比较?
对于输入dogcat,它只执行第一个if条件。由于其他两个条件作为 else if 条件给出,它们不会被执行。
由于在第 3 个 if 条件之后有一个分号的拼写错误,所以发生了混淆。所以错字为第 3 个 if 条件做了一个空语句。
由于打字错误,最后一组花括号中的语句不是第 3 个 if 条件的一部分。
所以,这周我才开始接触 Java,我发现了一些很奇怪的东西。我将添加代码,然后引导您完成。
import java.util.Scanner;
public class kids
{
public static void main(String[] args)
{
System.out.println("How old are you, doll?");
Scanner scanner = new Scanner(System.in);
int age = scanner.nextInt();
System.out.println("Doggie lover or a cat person?");
String animal = scanner.nextLine();
if(age < 18 && animal.contains("dog")) // 1st comparison
{
System.out.println("Hello cutie, welcome");
}
else if(age < 18 && animal.contains("cat")) // 2nd comparison
{
System.out.println("Oh, hi"); // This statement gets skipped
}
else if(age < 18 && animal.contains("cat")); // 3rd comparison
{
System.out.println("Hiya, Doggie lover!");
}
}
}
我在这里附上了我的输出 Output
所以,我给字符串 animal 输入了 "dogcat"。很明显,至少对我来说,三个比较应该 return TRUE 但我的输出却另有说明。似乎只有第一次和第三次比较 return TRUE 但很明显,如果第三次比较 return 为 TRUE,因为它包含字符串“cat”,所以第二次比较也是如此。为什么 Java 在这里跳过我的比较?
对于输入dogcat,它只执行第一个if条件。由于其他两个条件作为 else if 条件给出,它们不会被执行。
由于在第 3 个 if 条件之后有一个分号的拼写错误,所以发生了混淆。所以错字为第 3 个 if 条件做了一个空语句。
由于打字错误,最后一组花括号中的语句不是第 3 个 if 条件的一部分。