if else block不打印岩石剪刀游戏的声明

时间:2015-06-02 17:44:45

标签: java

嘿所有我想弄清楚我在这里做错了什么。我一直在通过netbeans IDE在java中制作一个石头剪刀游戏。我知道我已经看到了很多关于这方面的问题,但在我的if else语句中,我试图在条件得到满足的情况下打印出一些语句。如果玩家1投掷摇滚并且玩家2抛出任何东西,包括领带,它就会这样做,但除此之外的任何东西都不会在跑步时打印出来。我的代码在下面,知道你们喜欢特定的问题和较小的代码部分,但我觉得需要发布完整的代码,看看我哪里出错了。如果这是有道理的!谢谢你的帮助。

 public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String personPlay; //Player A -- "R", "P", or "S"
    String secondUser; //Player B
    Scanner scan = new Scanner(System.in);  
    System.out.println("Player 1Please enter your name");
    String name1;
    name1 = scan.next();
    System.out.println("Hello " + name1);
    System.out.println("Hello Player 2");
    System.out.println("Player 2 Please enter your name");
    String name2;
    name2 = scan.next();
    System.out.println("Hello "+name2);
    System.out.println(name1 + "  enter r for Rock, p for Paper, s for Scissors: ");   //Get player's play -- note that this is stored as a string
    personPlay = scan.next();
    personPlay = personPlay.toLowerCase();
    System.out.println(name2 + " enter r for Rock, p for Paper, and s for Scissors");
    secondUser = scan.next();
    secondUser = secondUser.toLowerCase();


    if (personPlay.equals(secondUser)) {
       System.out.println("It's a tie!");
    } else if (personPlay.equals("r")) {
       if (secondUser.equals("s")) {
          System.out.println("Rock beats scissors! Victory to "+name1);
       } else if (secondUser.equals("p")) {
          System.out.println("Paper beats Rock! Victory to "+name2);
       } if (personPlay.equals("p")) {
          if (secondUser.equals("s")) {
              System.out.println("Scissors cut Paper! Victory to "+name2);
          } else if (secondUser.equals("r")) {
              System.out.println("Paper covers rock! Victory to "+name1);
          } if (personPlay.equals("s")) {
              if (secondUser.equals("p")) {
                  System.out.println("Scissors beat paper! Victory to "+name1);
              }
          } else if (secondUser.equals("r")) {
              System.out.println("Rock beats Scissors! Victory to "+name2);
          }
        }
      }
    }
  }

1 个答案:

答案 0 :(得分:2)

您的条件,检查此人是否投掷纸张("p")或剪刀("s")或嵌套在该人扔石头("r")的条件下,因此永远不会真。

在您检查摇滚后,您需要检查此人是否在单独的else if案件中投掷纸张或剪刀。

} else if (personPlay.equals("r")) {
    if (secondUser.equals("s")) {
        System.out.println("Rock beats scissors! Victory to "+name1);
    } else if (secondUser.equals("p")) {
      System.out.println("Paper beats Rock! Victory to "+name2);
    }
} else if (personPlay.equals("p")) {
    // Test second user is rock and scissors here
} else if (personPlay.equals("s")) {
    // Test second user is paper and rock here
}

您还应该添加一些验证检查,以便两个玩家所做的输入仅限于3个合法选择。