• ベストアンサー

JAVAのハッシュテーブルについて

私は、ハッシュテーブルを使い、商品表を作っているのですが、ハッシュテーブルの中身をint型に変換できません。 どうしたら、int型に変換できるか教えていただけませんか?? 自分ではいろいろな方法を試したつもりなのですが。 お願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.3

No.2へのお礼をみて。 この書き方だとHashtableにはint型の値ではなく文字列が入っています。 > int i = ((Integer)nedan.get("aa[0]")).intValue(); ここを String s = ((String)nedan.get("aa[0]")); int i = Integer.parseInt(s); という感じに直してください。 あるいは、Hashtableに保存する前にint型変換してからIntegerでラップしてHashtableに保存して下さい。

staku
質問者

お礼

ありがとうございます。 できました。 これからも分からないことがあるかもしれないのでその時はお願いします。

その他の回答 (2)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

No.1に書かれた追加の質問について。 ファイルから読み込むときに何型で読み込んで、それをどのようにHashtableに入れていますか? エラーからキャストに失敗していることは分かりますが、具体的な問題点はコードを見ないと分かりません。

staku
質問者

お礼

String Line; while( ( Line = in.readLine() ) != null ) { String aa = Line.split(","); Hashtable nedan = new Hashtable(); nedan.put(aa[0],aa[1]); int i = ((Integer)nedan.get("aa[0]")).intValue(); i=i+3; System.out.println(i); } こんな感じです。お願いします。

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

HashtableにはObjectのサブクラスしか保存できません。 int型の値はそのままでは保存できないのでIntegerでラップします。 int i=1; Hashtable h = new Hashtable(); h.set("one", new Integer(i)); i = ((Integer)h.get("one")).intValue(); こんな感じになります。

staku
質問者

お礼

ありがとうございます。 もうひとつ質問なのですが、ファイルから読み込んでハッシュテーブルに入れて、intに変換するにはどうしたらよいでしょうか? ファイルの中身は数値です。 ハッシュテーブルに入れることはできたのですが、その後intに変換しようとするとエラーが出てしまいます。 エラーは Exception in thread "main" java.lang.ClassCastException at Main.main(Main.java:22) です。