我在double []中有5个预定义值的数据集:
A = {1.5, 1.8, 1.9, 2.3, 2.7, 3.0}
B = {1.2, 1.8, 1.9, 2.4, 2.9, 3.1}
.
.
E = {1.4, 1.7, 1.8, 1.9, 2.3, 2.9}
如何在枚举中表示它? 我想把它编码为:
private enum Solutions{
A(double[]),
B(double[]),
C(double[]),
D(double[]),
E(double[]) ;
private double[] val;
private Solutions(double[] pVal){
this.val = pVal;
}
}
这可能吗?
或
java中最好的数据类型或数据结构代表什么? 除了上面的double []数组,用户还可以定义自己的自定义数组。
请提出任何建议。
答案 0 :(得分:5)
我会使用varargs作为您的潜在数字:
private Solutions(double... values) {
this.val = values;
}
这将允许您传递任何可用的值:
A(12.4, 42.4, 30.2, 1.3),
B(39.2, 230.3, 230.0),
//etc...
答案 1 :(得分:2)
@Rogue的回答是正确而且非常简洁,但对于我们这些不知道如何将数组文字实例化为参数的人,或者你非常不幸并且不能使用Java 5+(我高度怀疑这一点)
你非常接近。您只需要实例化双数组
private enum Solutions {
A(new double[] {1.5, 1.8, 1.9, 2.3, 2.7, 3.0}),
B(new double[] {1.2, 1.8, 1.9, 2.4, 2.9, 3.1}),
C(new double[] {}),
D(new double[] {}),
E(new double[] {1.4, 1.7, 1.8, 1.9, 2.3, 2.9} ) ;
private double[] val;
private Solutions(double[] pVal) {
this.val = pVal;
}
}
答案 2 :(得分:0)
感谢所有答案,它们对我非常有用。 到目前为止,我一直在研究这个问题,这里有一个代码可以接受枚举的自定义值。
public class X {
private enum Solutions{
A (new double [] {1.5, 1.8, 1.9, 2.3, 2.7, 3.0} ),
B (new double [] {1.2, 1.8, 1.9, 2.4, 2.9, 3.1} ),
C (new double [] {1.3, 1.7, 0.9, 1.4, 2.2, 3.1} ),
D (new double [] {1.2, 1.4, 1.5, 2.6, 1.9, 3.1} ),
E (new double [] {1.4, 1.7, 1.8, 1.9, 2.3, 2.9} ),
CUSTOM (new double [] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0} );
private double[] val;
private Solutions (double[] pVal) {
val = pVal;
}
public double[] getVal(){
return this.val;
}
public void setVal(double[] pVal){
val = pVal;
}
}
public X() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args){
Solutions a = Solutions.A;
System.out.println("enum Solution A at index 0 is: " + a.getVal()[0] );
Solutions custom = Solutions.CUSTOM;
System.out.println("enum Solution Custom at index 0 is: " + custom.getVal()[0] );
double[] custArray = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
custom.setVal(custArray);
System.out.println("enum Solution Custom at index 0 after modification is: " + custom.getVal()[0] );
}
}
现在我与这个问题有关的最后一个问题是: 是否有自动方式强制只接受double []长度= 6(特定长度数组) 或者我必须自己检查一下?
让我们说......有没有办法像这样编写枚举的成员变量:
private double[6] val;
而不是
private double[] val;