2013-01-09 70 views
-1

我創建了一個哈希表,我試圖使用枚舉爲了打印出鍵和值。當我嘗試編譯代碼時,我不斷收到編譯時錯誤,說我需要在新的double中放入一個'['',放入哈希表中。 toys.put(「Race Car」,new double(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)); 
    } 

}

+1

你還在使用Java 1.4嗎? – fge

+0

我對Java仍然很陌生,我在哪裏檢查? – Jay

+0

你不能'new'原始類型。但是,由於自動裝箱(自1.5開始),只需使用:'toys.put(「Minigun」,999.99)'。此外,請在問題中包含* exact *複製粘貼錯誤消息。 – 2013-01-09 22:54:28

回答

1

地圖只接受對象,而不是基元,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));} 
1

double是原始類型。改爲使用包裝類Double。由於泛型的限制,集合不能保存原始類型的值,所以必須使用包裝器。

編譯器顯示此警告,因爲它假設您想實例化一個數組,可以使用new double [22]來完成。另外,如果您使用Java 1.5或更高版本,則只需使用原始值代替包裝值,它們就會自動轉換爲包裝對象。

0

一個包裝了doubleDouble(大小寫很重要)的類。

所以:

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

或者,由於Java 5中,自動裝箱(轉換雙自動雙)被suuported,所以

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

是完全一樣的。

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) 

請注意,我沒有測試過這最後一個,以確保它的工作原理自動裝箱。

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基本沒有類和沒有構造函數。