Java 使用“时出现编译时错误”;新双;

Java 使用“时出现编译时错误”;新双;,java,syntax,compiler-errors,Java,Syntax,Compiler Errors,我已经创建了一个哈希表,并尝试使用枚举来打印键和值。当我试图编译代码时,我不断收到一个编译时错误,说我需要在我放入哈希表的新double中加一个“[” 编译前: 玩具。推杆(“赛车”,新双人(29.99)) 编译时错误说我需要这样放置它: 玩具.put(“赛车”,新双[29.99]) 我做错了什么 public static void main(String[] args) { Hashtable toys = new Hashtable(); Enumeration toyName;

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

编译前: 玩具。推杆(“赛车”,新双人(29.99))

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

玩具.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));
  }

}
double
是基元类型。请改用包装类
double
。由于泛型的限制,集合无法保存基元类型的值,您必须使用包装

编译器显示此警告是因为它假定您想要实例化一个数组,这可以使用
newdouble[22]
来完成


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

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

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));}
Hashtable玩具=新Hashtable();
玩具。推杆(“赛车”,新双人(29.99));
玩具.放(玩具熊),新双(15.99);;
玩具。推杆(“动作图”,新双(9.99));}

包装
双精度
的类是
双精度
(大写很重要)

因此:

或者,由于Java5,自动装箱(自动将double转换为double)是suuported,所以

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

完全相同。

Java集合不能保存基元类型。您需要更改

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

它使用
Double
包装类型

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

toys.put("Race Car", 29.99)

请注意,我没有测试最后一个来确保它工作。

或者使用
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原语不是类,也没有构造函数。

你还在使用Java 1.4吗?我对Java还是很陌生,我在哪里检查呢?你不能
new
a原语类型。但是,由于自动装箱(从1.5开始),只需使用:
toys.put(“Minigun”,999.99)
。另外,请在问题中包含准确的复制粘贴错误消息。我是按照您所说的@pst格式设置的,这是我从上次编译中得到的警告:注意:/Applications/。/…使用未经检查或不安全的操作。注意:使用-Xlint重新编译:未经检查details@pst我已经这么做了,但它甚至没有帮到我。谢谢谢谢你一如既往地支持我。
toys.put("Race Car", new Double(29.99));
toys.put("Toy Bear", new Double(15.99));
toys.put("Action Figure", new Double(9.99));
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);