2015-06-02 23 views
0

嘿所有我想弄清楚我在做什么错在这里。我一直在使用NetBeans IDE制作一个用java编写的岩石剪刀游戏。我知道我已经看到很多关于这个问题的问题,但是在我的if else语句中,我试图让它打印出符合条件的一些语句。如果玩家1投掷石块并且玩家投掷任何东西(包括领带),那么它就是这样,但除此之外的其他东西不会在跑步时打印出语句。我的代码在下面,知道你们喜欢具体的问题和小部分的代码,但我觉得需要发布完整的代码来查看我出错的地方。如果这是有道理的!谢谢你的帮助。如果其他块不打印出岩石纸剪刀游戏的声明

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

您应该将其分解为多个方法,并且可以在'if'语句中组合条件以提高可读性。 – user489041

+2

让你的IDE重新格式化你的代码。也许有了正确的缩进,你就会明白逻辑出错的地方。 – RealSkeptic

+0

学习使用调试器。浏览每一行,看看它出错的地方。 – rghome

回答

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个合法选项。

+1

需要勇气浏览OP发布的代码。 +1 – CKing

+0

所以,我检查了我的代码,看看你在谈论,又相当新的这一点,我想重做的支架,以确保它没有被嵌套,并把否则,如果在相应的声明,并没有黯然工作,我很可能把它搞砸了。我试图用if语句重写代码。它做到了。似乎更粗糙,但我得到它运行。感谢您的帮助,只是想了解如何变得更好,并在阅读完评论后更好地对我的代码进行格式化。干杯。 –