【问题标题】:enum type, advancing to next level枚举类型,进入下一个级别
【发布时间】:2014-05-15 13:33:41
【问题描述】:

此代码不起作用,它说它需要分配运算符表达式。这是为什么?你能帮我吗?

enum Skill { ROOKIE, ADVANCED, EXPERT;

    public Skill getNext() {
        if (this.ordinal() < Skill.values().length - 1); 

        else { Skill.values() [this.ordinal() + 1];
            return null;
        }
    }
}

【问题讨论】:

  • “你能帮我修一下吗?”不,我们可以帮助您,而不是为您解决问题。
  • 你还没有说它有什么问题。 “这段代码不工作”给了我们任何工作。如果您需要帮助,您需要向我们提供足够的信息,以便我们能够真正做到这一点。
  • 我们可以,但看起来您需要复习 Java 基础知识。例如,一个方法必须从它拥有的所有路径中返回一些东西。
  • 你应该避免使用ordinal()方法。
  • @user3482500 不赞成使用序数方法。相反,给枚举中的每个项目一个 int 值。它使您的代码更具可读性和更易于维护。

标签: java enums


【解决方案1】:

这应该可行。它将返回下一个难度级别,如果是最高难度则返回 null。

if (this.ordinal() < Skill.values().length - 1) {
    return Skil.values()[this.ordinal()+1];
} else {
    return null;
}

【讨论】:

  • 糟糕,抱歉。那是一种类型。
  • 在处理if-elsefor 语句中的代码块时,始终使用大括号{},即使只包含一个语句。
  • +1 @LuiggiMendoza 因为必须维护代码的开发人员可能不会考虑它。
  • 我不应该复制/粘贴 OP 代码,而是重新键入它来捕获这些错误 :)
  • 那么,如果我想使用将 int 分配给每个枚举值的方法,我会使用 increment 推进到下一个级别吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
相关资源
最近更新 更多