-1

我已经创建了一个哈希表,我正在尝试使用枚举来打印出键和值。当我尝试编译代码时,我不断收到一个编译时错误,说我需要在新的双精度中放入一个“[”,我已经放入哈希表中。

编译前:toys.put("Race Car", new double (29.99));

编译时错误说我需要这样放置:

Toys.put("Race Car", new double [29.99]);

我究竟做错了什么?

public static void main(String[] args)  {
  Hashtable toys = new Hashtable();
  Enumeration toyName;
  String getToyName;
  double priceOfToy;
  toys.put("Race Car", new double(29.99));
  toys.put("Toy Bear", new double(15.99));
  toys.put("Action Figure", new double(9.99));
  //Show prices of each toy
  toyName = toys.keys();
  //Uses hasMoreElements method from enumeration to check what is in the hashtable
  while (toyName.hasMoreElements())  {
    //uses nextElement method from enumeration interface to 
    getToyName = (String) toyName.nextElement();
    System.out.println(getToyName +  "is now priced at " + toys.get(getToyName));
  }

}

4

5 回答 5

2

Java 集合不能保存原始类型。你需要改变

toys.put("Race Car", new double(29.99))

toys.put("Race Car", new Double(29.99))

它使用Double包装器类型。

您也可以简单地使用自动装箱

toys.put("Race Car", 29.99)

请注意,我没有测试最后一个以确保它有效。

于 2013-01-09T22:48:53.543 回答
1

double是原始类型。改用包装类Double。由于泛型的限制,集合不能保存原始类型的值,您必须使用包装器。

编译器显示此警告是因为它假设您想要实例化一个数组,这可以使用new double [22].

此外,如果您使用 Java 1.5 或更高版本,您可以只使用原始值代替包装器值,它们将自动转换为包装对象。

于 2013-01-09T22:47:07.733 回答
1

Map 只接受对象,不接受原语,double 是原语,Double 是 Object。并考虑为您的集合使用泛型类型:

Hashtable<String, Double> toys = new Hashtable<String, Double>();     
     toys.put("Race Car", new Double(29.99));
      toys.put("Toy Bear", new Double(15.99));
      toys.put("Action Figure", new Double(9.99));}
于 2013-01-09T22:47:28.993 回答
0

包装 a 的类doubleDouble(大写很重要)。

所以:

toys.put("Race Car", new Double(29.99));

或者,由于 Java 5,支持自动装箱(自动将双精度转换为双精度),所以

 toys.put("Race Car", 29.99d));

完全一样。

于 2013-01-09T22:48:25.527 回答
0

要么使用Double

toys.put("Race Car", new Double(29.99));
toys.put("Toy Bear", new Double(15.99));
toys.put("Action Figure", new Double(9.99));

或 java 原语double

toys.put("Race Car", 29.99);   // Java 1.5 or higher, makes use of inboxing
toys.put("Toy Bear", 15.99);
toys.put("Action Figure", 9.99);

Java 原语不是类,也没有构造函数。

于 2013-01-09T22:49:30.113 回答