首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复operation switch语句

如何修复operation switch语句
EN

Stack Overflow用户
提问于 2019-11-03 23:56:02
回答 1查看 56关注 0票数 1

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

代码语言:javascript
复制
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>

我收到了一些错误,从switch (操作)行开始。我该如何着手解决这个问题呢?另外,我是否可以直接在AClass中插入枚举操作符,而不是使用接口?

EN

回答 1

Stack Overflow用户

发布于 2019-11-04 00:19:21

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

代码语言:javascript
复制
AClass <Operator> operation = new AClass <Operator>(); // will not work
Operator operation = Operator.ADD; // will work since operator is an enum;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58681886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档