Java的语言的函数里怎么把运算符作为函数的参数呢

Java的语言的函数里怎么把运算符作为函数的参数呢?比如
int jisuan(int a, int b, ? yunsuanfu) 这里传入什么

刚才给你一份代码了, 可以结合着看哈, 效果如图:

img

代码如下 :

public class Calculator {
    public static void main(String[] args) {
        int result = jisuan(5, 3, Operator.ADD);
        System.out.println(result); // 输出:8
        
        result = jisuan(6, 2, Operator.SUBTRACT);
        System.out.println(result); // 输出:4
    }
    
    public static int jisuan(int a, int b, Operator operator) {
        switch (operator) {
            case ADD:
                return a + b;
            case SUBTRACT:
                return a - b;
            case MULTIPLY:
                return a * b;
            case DIVIDE:
                return a / b;
            default:
                throw new IllegalArgumentException("无效的运算符");
        }
    }
}

enum Operator {
    ADD, SUBTRACT, MULTIPLY, DIVIDE
}


加双引号"?"

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:
    public class Calculator {
    
        public int calculate(int a, int b, Operator operator) {
            return operator.operate(a, b);
        }
    
        public interface Operator {
            int operate(int a, int b);
        }
    
        public static void main(String[] args) {
            Calculator calculator = new Calculator();
    
            // 使用加法运算符
            int sum = calculator.calculate(5, 3, new Operator() {
                @Override
                public int operate(int a, int b) {
                    return a + b;
                }
            });
            System.out.println("5 + 3 = " + sum);
    
            // 使用减法运算符
            int difference = calculator.calculate(5, 3, new Operator() {
                @Override
                public int operate(int a, int b) {
                    return a - b;
                }
            });
            System.out.println("5 - 3 = " + difference);
    
            // 使用乘法运算符
            int product = calculator.calculate(5, 3, new Operator() {
                @Override
                public int operate(int a, int b) {
                    return a * b;
                }
            });
            System.out.println("5 * 3 = " + product);
    
            // 使用除法运算符
            int quotient = calculator.calculate(10, 2, new Operator() {
                @Override
                public int operate(int a, int b) {
                    return a / b;
                }
            });
            System.out.println("10 / 2 = " + quotient);
        }
    }
    

    运行上述代码,可输出以下结果:

    5 + 3 = 8
    5 - 3 = 2
    5 * 3 = 15
    10 / 2 = 5
    

    在上述代码中,首先定义了一个Operator接口,该接口有一个operate方法用于执行具体的运算操作。然后,在calculate方法中,通过调用operator.operate(a, b)来执行具体的运算。

    使用匿名类和接口实现类来传递运算符是一种常见的做法。根据需要可以实现自定义的运算符,只需实现Operator接口,并在方法调用时传递对应的实现类对象即可。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^