java嵌套if语句else不起作用

标签 java

当其他语句都不为 true 时,语句的 else 部分不会执行。

if (personPlay.equals(computerPlay))  
        System.out.println("It's a tie!");
    else if (personPlay.equals("R"))
        if (computerPlay.equals("S")) 
        System.out.println("Rock crushes scissors.  You win!!");
    else if (personPlay.equals("P"))
        if (computerPlay.equals("R")) 
        System.out.println("Paper raps around rock. You win!");
    else if (personPlay.equals("S"))
        if (computerPlay.equals("P"))
        System.out.println("Scissors cut paper. You win!");
    else 
        System.out.println("you lose");

最佳答案

使用括号:

if (personPlay.equals(computerPlay)) {
    System.out.println("It's a tie!");
} else if (personPlay.equals("R")) {
    if (computerPlay.equals("S")) 
      System.out.println("Rock crushes scissors.  You win!!");
} else if (personPlay.equals("P")) {
    if (computerPlay.equals("R")) 
        System.out.println("Paper wraps around rock. You win!");
} else if (personPlay.equals("S")) {
    if (computerPlay.equals("P"))
        System.out.println("Scissors cut paper. You win!");
} else {
    System.out.println("you lose");
}

正如评论中提到的,这段代码仍然无法工作,因为逻辑有缺陷。您应该在每个内部 if 中有一个 else 子句,其中您应该打印“youlos”:

if (personPlay.equals(computerPlay)) {
    System.out.println("It's a tie!");
} else if (personPlay.equals("R")) {
    if (computerPlay.equals("S")) 
        System.out.println("Rock crushes scissors.  You win!!");
    else 
        System.out.println("you lose");
} else if (personPlay.equals("P")) {
    if (computerPlay.equals("R")) 
        System.out.println("Paper wraps around rock. You win!");
    else 
        System.out.println("you lose");
} else if (personPlay.equals("S")) {
    if (computerPlay.equals("P"))
        System.out.println("Scissors cut paper. You win!");
    else 
        System.out.println("you lose");
} else {
    System.out.println("invalid input");
}

或者您可以消除内部 if 并使用 && 代替:

if (personPlay.equals(computerPlay)) {
    System.out.println("It's a tie!");
} else if (personPlay.equals("R") && computerPlay.equals("S")) {
      System.out.println("Rock crushes scissors.  You win!!");
} else if (personPlay.equals("P") && computerPlay.equals("R")) { 
        System.out.println("Paper wraps around rock. You win!");
} else if (personPlay.equals("S") && computerPlay.equals("P")) {
        System.out.println("Scissors cut paper. You win!");
} else {
    System.out.println("you lose");
}

关于java嵌套if语句else不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25769818/

相关文章:

java - SpringRunner/JUnit 运行/测试私有(private)(非测试)方法

java - 打印二维数组列表

java - Android 16 位彩色图像到位图

java - 为什么将 Collections.emptySet() 与泛型一起使用在赋值中而不是作为方法参数?

Java,可见性和无限循环发生

Java 拆分句子

java - 未正确添加到数组。希望得到帮助

java - 将所选项目滚动到 JList 顶部

java - 如何从文件加载 Java 枚举元素的值

java - 当我需要使用 Optional.orElseGet() 而不是 Optional.orElse()