2

我正在做一个学校的作业,并发现了一个叫做 Enum 的东西。

我认为这对我的家庭作业很有帮助。

所以我决定使用它,但是当这个错误出现时。

我用谷歌搜索了关于它的东西,但我似乎无法修复它。

错误“插入枚举以完成编译单元”出现在数字 15

public enum TimeToClock {   

    9,9.5,
    10,10.5,
    11,11.5,
    12,12.5,
    13,13.5,
    14,14.5,
    15,15.5,
    16,16.5,
    17. 

}

这是尝试改进此问题中的代码

4

4 回答 4

3

我会使用一个双精度数组。

static final double[] timeToClock = {
    9,  9.5,
    10, 10.5,
    11, 11.5,
    12, 12.5,
    13, 13.5,
    14, 14.5,
    15, 15.5,
    16, 16.5,
    17
};

或@Puce 建议的列表

static final List<Double> timeToClock = Arrays.asList(
    9,  9.5,
    10, 10.5,
    11, 11.5,
    12, 12.5,
    13, 13.5,
    14, 14.5,
    15, 15.5,
    16, 16.5,
    17
);
于 2012-12-04T14:59:09.953 回答
1

问题是枚举的概念不只是用来存储一组常量,而是一组常量,这对你来说意味着什么,但实际上是你的枚举的实例,所以直接存储浮点数是行不通的。

您插入的每个数字都必须具有合法的 Java 变量名,例如:

public enum TimeToClock {
  _9(9.0f),
  _9_5(9,5f)
  ;

  public final float value;

  public TimeToClock(float value) {
    this.value = value
  }
}

通过这种方式,您可以引用您的字段,_9.value我想这是您可以将枚举用于您的特定目的的唯一方法。对于您可以使用的其他任何内容:

  • 数组float[] values = new float[]{9f, 9.5f, .... };
  • 常数,例如public static final float _9_5 = 9.5f

如果您可以将含义与每个数字相关联,则使用枚举是有意义的,在您的情况下,您仍然可以通过对允许的值集进行静态编译检查来毫无问题地使用它,但是您可以看到语法非常笨拙,因为每个值都只是一个值。

于 2012-12-04T14:58:59.847 回答
1

枚举常量应该是适当的变量名,在 Java 中,变量名不能以数字开头。你可以试试这个:

public enum TimeToClock {    
  T9, T9_5,
  T10, T10_5
  // Go on
}
于 2012-12-04T14:59:08.333 回答
0

整数不能直接包含在其中,enum因为整数本身没有意义。

大多数人会使用Strings' array,因为它是实现目标的最简单方法。

但是,想象一下,如果您想将调度传递给这样的方法参数:

public void pronounceSchedule(String schedule){
   // Nothing ensures that a valid Schedule is passed !
}

使用枚举,您将获得预期的保证:

public void pronounceSchedule(TimeToClock timeToClock){
   // No need to validate the schedule since it is already assumed to be valid thanks to the compiler.
}

你可以使用:

public enum TimeToClock {
    NINE(9),
    NINE_AND_HALF(9.5f);
    // etc...

    TimeToClock(float schedule) {
        this.schedule = schedule;
    }

    public float getSchedule(){
        return schedule;
    }

    private float schedule;
}

顺便说一句,这两种方法都是有效的,实际上取决于您的上下文和目标。

于 2012-12-04T15:02:58.857 回答