使用“new double”时编译时间错误

时间:2013-01-09 22:45:47

标签: java syntax compiler-errors

我已经创建了一个哈希表,我正在尝试使用枚举来打印出键和值。当我尝试编译代码时,我不断收到编译时错误,说我需要在哈希表中添加'['in new double'。

编译前: toys.put(“赛车”,新双(29.99));

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

toys.put(“赛车”,新双[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));
  }

}

5 个答案:

答案 0 :(得分: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)

请注意,我没有对最后一个进行测试以确保其有效。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

Map只接受Objects,而不接受基元,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));}

答案 3 :(得分:0)

包装double的类是Double(大写很重要)。

所以:

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

或者,从Java 5开始,自动装箱(自动将双转换为双倍),所以

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

完全一样。

答案 4 :(得分: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原语不是类,也没有构造函数。