-1

ハッシュ テーブルを作成し、キーと値を出力するために列挙を使用しようとしています。コードをコンパイルしようとすると、ハッシュテーブルに入れた新しい double に「[」を入れる必要があるというコンパイル時エラーが発生し続けます。

コンパイル前: toys.put("Race Car", new double (29.99));

コンパイル時エラーは、次のように配置する必要があることを示しています。

toys.put("レースカー", 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はオブジェクトです。また、コレクションにジェネリック型を使用することも検討してください。

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 に答える
1

doubleプリミティブ型です。Double代わりにラッパー クラスを使用してください。ジェネリックの制限により、コレクションはプリミティブ型の値を保持できません。ラッパーを使用する必要があります。

コンパイラは、配列をインスタンス化する必要があると想定しているため、この警告を表示します。これは、new double [22].

また、Java 1.5 以降を使用する場合は、ラッパー値の代わりにプリミティブ値を使用するだけで、ラップされたオブジェクトに自動的に変換されます。

于 2013-01-09T22:47:07.733 に答える
0

aをラップするクラスdouble はですDouble(大文字化は重要です)。

それで:

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

または、Java 5以降、オートボクシング(doubleをDoubleに自動的に変換する)がサポートされているため、

 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 に答える