如果if子句包含类似的比较,为什么Java会跳过它们



所以,这周我刚开始对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!");
}
}
}

我在这里附上了我的输出输出

因此,我给出了一个输入"dogcat">到字符串动物。很明显,或者至少对我来说,这三个比较应该返回TRUE,但我的输出却相反。似乎只有第一和第三比较返回TRUE,但如果第三比较由于包含字符串"0"而返回TRUE;猫;第二次比较也是如此。为什么Java在这里跳过了我的比较?

对于输入dogcat,它只执行第一个if条件。由于其他两个条件是按照else-if条件给出的,所以它们不会被执行。

由于第3个if条件后面有分号的拼写错误,所以会出现混淆。因此,拼写错误为第3rd if条件生成了一个空语句。

由于拼写错误,最后一组大括号中的语句不是3rd if条件的一部分。

最新更新