Java 使用“时出现编译时错误”;新双;
我已经创建了一个哈希表,并尝试使用枚举来打印键和值。当我试图编译代码时,我不断收到一个编译时错误,说我需要在我放入哈希表的新double中加一个“[” 编译前: 玩具。推杆(“赛车”,新双人(29.99)) 编译时错误说我需要这样放置它: 玩具.put(“赛车”,新双[29.99]) 我做错了什么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;
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);