**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
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跳过了我的比较呢?
1条答案
按热度按时间uajslkp61#
对于输入dogcat,它只执行第一个if条件。由于其他两个条件与else if条件一样给出,因此它们不会被执行。
混淆是因为在第三个if条件后面有一个分号。所以输入错误为第三个if条件生成了一个空语句。
由于输入错误,最后一组大括号中的语句不是3rd if条件的一部分。