Java 如何编写value()方法?

Java 如何编写value()方法?,java,Java,我正在编写一个算术运算类,value()方法需要组合左操作数、操作数和右操作数。有人能在公地里写吗 算术运算:算术运算表示两个值之间的算术运算。算术运算类型应包含以下枚举类型,以表示该语言可能的运算(如果愿意,您可以自由添加其他运算符): 公共枚举运算符{Add,Sub,Mult,Div,Rem;} 运算符表示+、-、*、/、和%运算。 应使用三个参数创建算术运算类型实例:来自上述运算符枚举类型的运算,以及表示左操作数表达式和右操作数表达式的两个表达式。该类型应允许任何具有int/Integer

我正在编写一个算术运算类,value()方法需要组合左操作数、操作数和右操作数。有人能在公地里写吗

算术运算:算术运算表示两个值之间的算术运算。算术运算类型应包含以下枚举类型,以表示该语言可能的运算(如果愿意,您可以自由添加其他运算符):

公共枚举运算符{Add,Sub,Mult,Div,Rem;} 运算符表示+、-、*、/、和%运算。 应使用三个参数创建算术运算类型实例:来自上述运算符枚举类型的运算,以及表示左操作数表达式和右操作数表达式的两个表达式。该类型应允许任何具有int/Integer值的语言结构成为可能的表达式。算术运算类型应具有以下方法:

value:将状态作为输入并返回int/Integer值,该值是将操作应用于每个操作数表达式的值的结果。应该使用状态来获取表达式的值。 toString:应返回一个字符串,该字符串首先包含左操作数的字符串表示形式,然后是空格、运算符的字符串表示形式、空格和右操作数的字符串表示形式

public interface Operation {
   public enum Operator { Add, Sub, Mult, Div, Rem; }
}

import java.util.*;
import java.io.*;

public class ArithmeticOperation <I> implements Operation{
     ArithmeticOperation <Integer> leftoperand = new 
ArithmeticOperation <Integer>();
     ArithmeticOperation <Operator> operation = new 
ArithmeticOperation <Operator>();
     ArithmeticOperation <Integer> rightoperand = new 
ArithmeticOperation <Integer>(); 


    public Integer value(State s){
           return leftoperand+operation+rightoperand;
     }

     public String toString(){
          return "("+leftoperand+" , "+operation+", 
"+rightoperand+")";

     }    

}




1 error found:
File: /Users/a13875810600/Desktop/ArithmeticOperation.java  [line: 
11]
Error: bad operand types for binary operator '+'
  first type:  ArithmeticOperation<java.lang.Integer>
  second type: ArithmeticOperation<Operation.Operator>
公共接口操作{
公共枚举运算符{Add,Sub,Mult,Div,Rem;}
}
导入java.util.*;
导入java.io.*;
公共类算术运算实现运算{
算术运算左操作数=新
算术运算();
算术运算=新运算
算术运算();
算术运算右操作数=新
算术运算();
公共整数值(状态s){
返回左操作数+操作数+右操作数;
}
公共字符串toString(){
返回“(“+左操作数+”,“+运算+”,
“+RightOperator+”;
}    
}
发现1个错误:
文件:/Users/a13875810600/Desktop/ArithmeticOperation.java[行:
11]
错误:二进制运算符“+”的操作数类型错误
第一类:算术运算
第二类:算术运算
我想知道现在如何添加整数类型和运算符类型。这确实值得考虑很久。

我想应该是:

public Integer value(State s){
    switch (operation) {
        case Add:
            return leftoperand.value(s) + rightoperand.value(s);
        case Sub:
            return leftoperand.value(s) - rightoperand.value(s);
        case Mul:
            return leftoperand.value(s) * rightoperand.value(s);
        case Div:
            return leftoperand.value(s) / rightoperand.value(s);
        case Rem:
            return leftoperand.value(s) % rightoperand.value(s);
    }
}

另外,如果我在某些方面没有意义,请直接写在评论中,这可能有助于我在这个问题上做出一些改进。你的
函数没有意义。如何在
整数
运算符
上使用“+”符号?