2013-11-24 18 views
1

这只是一个简单的摇滚纸剪刀游戏,我用日食作为测试,我已经把一个通过此网站较早,并得到一些答案,但现在我遇到了一个问题,我找不到赢家?Java - 为什么不行?

package rockPaperScissors; 

import java.util.Scanner; 
import java.util.Random; 

public class RockPaperScissors { 

    public static void main(String args[]) { 
     String playerChose; 
     String computerChose; 
     while(true) { 
      System.out.println("Welcome to rock paper scissors!"); 
      System.out.println("Please enter \"rock\", \"paper\", or \"scissors\""); 
      Scanner playerChoice = new Scanner (System.in); 
      playerChose = playerChoice.nextLine(); 
      Random computerChoice = new Random(); 
      int computer = computerChoice.nextInt(3) + 1; 

      switch (computer) { 
      case 1: 
       computerChose = "rock"; 
       System.out.println("Computer chose rock!"); 
       break; 
      case 2: 
       computerChose = "paper"; 
       System.out.println("Computer chose paper!"); 
       break; 
      case 3: 
       computerChose = "scissors"; 
       System.out.println("Computer chose scissors!"); 
      } 

      computerChose = new String(); 

      if (playerChose.equals("rock") && computerChose.equals("scissors") || playerChose.equals("paper") && computerChose.equals("rock") || playerChose.equals("scissors") && computerChose.equals("paper")) { 
       System.out.println("Player won!"); 
      } 
      if(playerChose.equals(computerChose)) { 
       System.out.println("Game tied!"); 
      } 
      if(computerChose.equals("rock") && playerChose.equals("scissors") || computerChose.equals("paper") && playerChose.equals("rock") || computerChose.equals("scissors") && computerChose.equals("paper")) { 
       System.out.println("Computer won!"); 
      } 
     } 
    } 
} 
+3

在你的条件语句周围放一些括号。您可能忽略了一些运营商的优先级。 –

+0

这似乎是一个非常复杂的方式来实现它。游戏中没有这么多的逻辑...... – Brandon

+2

你也可以'computerChose = new String();'在你检查之前删除你以前的任何值。 –

回答

0

测试和工程

初始化computerChose向右走,让你在初始化后,它改变
String computerChose;String computerChose = "";

并带走行computerChose = new String();因为它设置computerChoose字符串为空字符串你的开关盒。

0

更改您的computerChose初始申报(您while前),以String computerChose = "";并删除读取computerChose = new String();(您switch后)线。

0

while声明后,computerChose正在使用computerChose = newString()重置。因此,在if声明中没有测试的条件都等同于真实。