【问题标题】:Why do I get the error "variable 'color' might not have been initialized? Java [closed]为什么我会收到错误“变量'颜色'可能尚未初始化?Java [关闭]
【发布时间】:2019-12-28 10:19:47
【问题描述】:

所以我正在制作一个完全由计算机玩家在控制台中玩的 UnoCard 游戏。我正在学习 UnoCard 课程,但遇到了一个不知道如何解决的错误。我使用枚举作为颜色和值。我收到 2 行代码的这些错误消息:以下代码行(第 32 行)private final Color color; 给了我这个错误消息“变量值可能没有被初始化”并且这行代码(第 33 行)private final Value value; 给出我这个错误消息“可变颜色可能尚未初始化”。在这些错误之后,我还有两个错误消息:(第 35-38 行)public UnoCard(final Color color, final Value value){this.color = color; this.value = value;}“此处不允许公开修饰符”和“无效的方法声明:需要返回类型”。是什么导致了这些错误以及如何修复它们。

我尝试了以下方法:对于第 32 行和第 33 行,我去掉了 final 关键字,对于第 35-38 行,我添加了枚举 Color 作为返回类型,但这没有意义,因为我习惯于枚举颜色和值。

这是我尝试修复之前的 UnoCard 类的代码。

public class UnoCard {
    enum Color {
        RED, BLUE, GREEN, YELLOW, WILD;

        private static final Color[] colors = Color.values();
        public static Color getColor(int i){
            return Color.colors[i];
        }

        enum Value {
            ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, SKIP, DRAW_TWO, REVERSE, WILD, WILD_FOUR;
            private static final Value[] values = Value.values();
            public static Value getValue(int i){
                return Value.values[i];
            }
    }

    private final Color color;
    private final Value value;

    public UnoCard(final Color color, final Value value){
        this.color = color;
        this.value = value;
    }

    public Color getColor(){
        return this.color;
    }

    public Value getValue(){
        return this.value;
    }

    @Override
    public String toString() {
        return color + "_" + value;
    }
}

【问题讨论】:

  • 错字:您的枚举声明之间缺少右括号。
  • 为什么你还有那个颜色数组?
  • 错字错误缺少右括号}
  • 对不起,伙计们。我应该看到的。

标签: java enums var


【解决方案1】:

您在之后缺少}

public static Color getColor(int i){
    return Color.colors[i];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多