有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java你能让一个方法==另一个方法吗?

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

  1. # 1 楼答案

    也许你应该试试这个:

    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"); 
        }
    
    }
    
  2. # 2 楼答案

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

    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");
        }
    }
    

    当您两次调用这些方法时,将生成两次随机数,并询问两次用户输入

  3. # 3 楼答案

    我看不出代码中有什么原因说明比较不起作用

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

    您需要将computerInput的结果存储在某个位置,以便在两个位置显示相同的数字

  4. # 4 楼答案

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

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

  5. # 5 楼答案

    我做了一些小改动,(不要调用方法两次)

      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?
        }