如何修复操作开关语句



在这个名为AClass的类中,我尝试制作一个switch语句,该语句将使用在两个值之间输入的运算符。

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

import java.util.*;
import java.io.*;
public class AClass<I> implements Operation {
AClass <Integer> leftoperand = new AClass <Integer>();
AClass <Operator> operation = new AClass <Operator>();
AClass <Integer> rightoperand = new AClass <Integer>(); 
public Integer value (SClass sc) {
switch (operation) {
case Add:
return leftoperand.value(sc) + rightoperand.value(sc);
case Sub:
return leftoperand.value(sc) - rightoperand.value(sc);
case Mult:
return leftoperand.value(sc) * rightoperand.value(sc);
case Div:
return leftoperand.value(sc) / rightoperand.value(sc);
case Rem:
return leftoperand.value(sc) % rightoperand.value(sc);
}
}
public String toString() {
return "(" + leftoperand + "," + operation + "," + rightoperand + ")";
}
}
Error: incompatible types: AClass<AClass.Operator> cannot be converted to int
Error: cannot find symbol
symbol:   variable Add
location: class AClass<I>
Error: cannot find symbol
symbol:   variable Sub
location: class AClass<I>
Error: cannot find symbol
symbol:   variable Mult
location: class AClass<I>
Error: cannot find symbol
symbol:   variable Div
location: class AClass<I>
Error: cannot find symbol
symbol:   variable Rem
location: class AClass<I>

我收到了一些错误,从开关(操作(线路开始。我该怎么解决这个问题?另外,我可以在AClass中插入enum运算符而不是使用接口吗?

Java switch语句并不支持所有的类。从java文档中,与if-then和if-then-else语句不同,switch语句可以有许多可能的执行路径。开关适用于byte、short、char和int基元数据类型。它还适用于枚举类型(在Enum types中讨论(、String类和一些包装某些基元类型的特殊类:Character、Byte、Short和Integer(在Numbers和Strings中讨论过(。

AClass <Operator> operation = new AClass <Operator>(); // will not work
Operator operation = Operator.ADD; // will work since operator is an enum;

最新更新