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

sshcrbum  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(293)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

11天前关门了。
改进这个问题
所以,这周我刚开始对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,但是如果第三个比较返回true,因为它包含字符串“cat”,那么第二个比较也会返回true。为什么java跳过了我的比较呢?

uajslkp6

uajslkp61#

对于输入dogcat,它只执行第一个if条件。由于其他两个条件与else if条件一样给出,因此它们不会被执行。
混淆是因为在第三个if条件后面有一个分号。所以输入错误为第三个if条件生成了一个空语句。
由于输入错误,最后一组大括号中的语句不是3rd if条件的一部分。

相关问题