2012-12-04 101 views
2

我正在做一个学校作业,并发现了一个叫做Enum的东西。Enumbody错误我该如何解决它?

我认为这对我的功课非常有帮助。

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

我google了一下它的东西,但我似乎无法修复它。

错误“插入enumbody完成编译单元”出现在了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. 

} 

这是提高this question

+0

你想通过将所有这些数字放入枚举体中来实现什么? – NPE

+1

这不是使用您可能正在寻找的枚举。请明确说明你想要什么? –

+0

是枚举完成还是'17.'不完整?这可能会导致错误 – Gamb

回答

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

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

1

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

public enum TimeToClock {  
    T9, T9_5, 
    T10, T10_5 
    // Go on 
} 
3

我会使用double数组。

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 
); 
+1

+1或者,也许列表使用Arrays.asList() – Puce

+0

谢谢你的家伙。 这有助于:D – Oxtis

0

整数不直接在enum允许因为整数本身没有任何意义。

大多数人会使用String s'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; 
} 

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

相关问题