Java的语言的函数里怎么把运算符作为函数的参数呢?比如
int jisuan(int a, int b, ? yunsuanfu) 这里传入什么
刚才给你一份代码了, 可以结合着看哈, 效果如图:
代码如下 :
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
}
加双引号"?"
不知道你这个问题是否已经解决, 如果还没有解决的话: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
接口,并在方法调用时传递对应的实现类对象即可。