2013-12-17 69 views
0

我评论代码无法正常工作。为什么不呢?我确定calculate()==computerInput(),但它打印出“这个不起作用”!这是为什么?你可以做一个方法==另一种方法?

import java.util.Scanner; 

class Drank { 

    private static String[] userOption = new String[] { "Rock", "Paper", "Scissors" }; 
    private static String[] computerOption = new String[] { "Rock", "Paper", "Scissors" }; 

    public static void main(String[] args) { 
     System.out.println("Enter: Rock, Paper Or Scissors"); 
     System.out.println(calculate()); 
     System.out.println(computerInput()); 
     result(); 
    } 

    public static int calculate() { 
     Scanner input = new Scanner(System.in); 
     String userInput = input.nextLine(); 

     int calculate = 0; 
     if (userInput.equals(userOption[0])) { 
      calculate = 0; 
     } else if (userInput.equals(userOption[1])) { 
      calculate = 1; 
     } else if (userInput.equals(userOption[2])) { 
      calculate = 2; 
     } 
     return calculate; 
    } 

    public static int computerInput() { 
     int ai = (int) (Math.random() * 3); 
     return ai; 
    } 

    public static void result() { 
      if (calculate() == computerInput()) { 
      System.out.println("Computer's Pick:" + computerOption[computerInput()]); 
     } else { 
      // THIS IS WHERE THE PROBLEM 
      // IS! It always prints out 
      // the'else' even when both 
      // are equal? 
      System.out.println("This doesnt work"); 
     } 
    } 
} 
+0

你确定你从方法正确的结果? – Jakob

+2

_“我确定calculate()== to computerInput()”_。如果一种方法是随机的,这怎么可能呢? –

回答

7

您再次调用方法,而不是使用重用它们的返回值。

int calc = calculate(); 
int comp = computerInput(); 

System.out.println(calc); 
System.out.println(comp); 

result(calc, comp); // Reuse them here! 

当然,这需要您为result方法添加额外的参数。

public static void result(int calc, int comp) // Add params here 
{ 
    if(calc == comp) // Compare them here! 
    { 
     System.out.println("Computer's Pick:" + computerOption[computerInput()]); 
    } else 
    { 
     System.out.println("This doesnt work"); 
    } 
} 

当你在两次调用方法,将产生的随机数的两倍和用户输入将被要求两次。

0

我在代码中看不到任何理由,为什么比较不起作用。

请注意,虽然每次调用computerInput它都会返回一个不同的值,所以它打印的值将不会与在比较中使用的值相同。

您需要将computerInput的结果存储在某处以在两处显示相同的数字。

1

您的代码使用computerInput()中的随机数生成器。每次运行该方法时,此值都会更改。因此,你必须很幸运地猜测电脑的答案。但是你显然不会猜对。

您打电话给computerInput() againt,这意味着即使您猜出正确的值,显示的结果可能会不同。

0

也许你应该试试这个:

public static void result(){ 

int calculate = calculate(); 
int computerInput = computerInput(); 

    if(calculate == computerInput){ 
     System.out.println("Computer's Pick:" + computerOption[computerInput]); 
    } else { 
     System.out.println("This doesnt work"); 
    } 

} 
0

我做了细微的变化,(不调用方法两次)

main(){ 
     int c = calculate(); 
     int ci=computerInput(); 
    } 

public static void result(int c, int ci){ 

    if(c==ci){ 
     System.out.println("Computer's Pick:" + computerOption[computerInput()]); 
    } else { 
     System.out.println("This doesnt work"); //THIS IS WHERE THE PROBLEM IS! It always prints out the'else' even when both are equal? 
    } 
相关问题