你能用方法==另一种方法吗?

时间:2013-12-17 12:07:41

标签: java if-statement methods equals

我评论了代码不起作用的地方。为什么不呢?我确保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"); 
        }
    }
}

5 个答案:

答案 0 :(得分: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");
    }
}

当您调用方法两次时,将生成一个随机数两次,并且会询问用户输入两次。

答案 1 :(得分:1)

您的代码在computerInput()中使用随机数生成器。每次运行该方法时,此值都会更改。因此,您必须很幸运地猜到计算机的答案。但你显然不能正确猜测它。

您正在调用computerInput(),这意味着即使您猜对了正确的值,显示的结果也可能不同。

答案 2 :(得分:0)

我在代码中看不出任何原因,为什么比较不起作用。

请注意,每次调用computerInput时,它都会返回不同的值,因此它打印的值与比较中使用的值不同。

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

答案 3 :(得分: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"); 
    }

}

答案 4 :(得分: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?
    }