import java.util.*;
class BubbleSort {
public static void Sort(double[] a) {
HashMap hmap = new HashMap(); // ☆
int m, i, j;
double n, t;
for(i=0; i<a.length; i++) {
hmap.put(a[i], i); // (1)
}
for(i=0; i<a.length; i++) {
m = hmap.get(a[i]); // (2)
if(m >= 9) {
System.out.println("キー " + (m+1) + " の値=" + a[i]);
}
else {
System.out.println("キー " + (m+1) + " の 値=" + a[i]);
}
}
}
public static void main(String args[]) {
double[] a = {7.6, 7.8, 5.6, 4.1, 0.3, 9.9, 1.5, 8.1, 7.1, 5.3};
Sort(a);
}
}
上記のように、(1)ではkey(main文にある各配列要素)をvalue(keyの要素に対応する番号)に対応付けする、(2)では指定したキーに対応した値を返す、といったことをしたいのですが、エラーが出てしまいコンパイルできません。J2SDK5.0では、☆の部分を、
HashMap<Double,Integer> hmap = new HashMap<Double,Integer>();
のようにすればコンパイル、実行できます。しかし事情があって1.4でしたいのです。どのようにすればできるでしょうか?宜しくお願いします。
No.3ベストアンサー
- 回答日時:
下記のように書いてみて下さい。
注意事項としては、HashMapクラスに格納できるのは、キー、値とも、Objectクラスのサブクラスだけです。
ですので、intとかdoubleとか、プリミティブな変数は格納できません。
下記では、キー、値ともに、Stringクラスに変換してから格納しています。
public static void Sort(double[] a) {
HashMap hmap = new HashMap(); // ☆
int m, i, j;
double n, t;
for(i=0; i<a.length; i++) {
hmap.put(Double.toString(a[i]), Integer.toString(i));
}
for(i=0; i<a.length; i++) {
m = Integer.parseInt((String)hmap.get(Double.toString(a[i]))));
if(m >= 9) {
System.out.println("キー " + (m+1) + " の値=" + a[i]);
} else {
System.out.println("キー " + (m+1) + " の 値=" + a[i]);
}
}
}
ふむふむ。、HashMapクラスに格納できるのは、キー、値とも、Objectクラスのサブクラスだけなのですね。そして、Stringクラスに変換しなければ格納できないのですね。自分が見た参考書にはそんなに詳しく書かれていませんでしたのでとても助かりました。
詳しい説明とソースをありがとうございました。
No.2
- 回答日時:
>型の不一致: Integer から int には変換できません。
では
m = ((Integer)(hmap.get(new Double(a[i])))).intValue(); // (2)
では
おおっ!実行できました!
Integerクラスの値をさらにintValueメソッドでintで返すなんて分かりませんでした。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数を動的に利用するには?
-
NoSuchMethodErrorが解決できま...
-
中カッコ{}だけの記述について
-
【初心者です】javaで平均値を...
-
System.exit()の値を取得したい
-
randomで
-
ArrayList でスタックを
-
インタフェイス実装と抽象クラ...
-
getActualMaximum(Calendar.DAY...
-
Javaでlog4jを使ってログ出力を...
-
java 継承の問題で分からないと...
-
Socketの接続のタイムアウトを...
-
GetterとSetterをやったのに。
-
Java 最大公約数 gcd
-
コマンドライン引数の*(アフ...
-
プログラミングの問題です。大...
-
コンストラクタ,interface,abst...
-
元旦からの経過日数を求めたい
-
コンパイラのバグ?それとも
-
元旦からの日数を入力して、何...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
System.exit()の値を取得したい
-
Javaでlog4jを使ってログ出力を...
-
NoSuchMethodErrorが解決できま...
-
javaで特定の文字列から特定の...
-
Socketの接続のタイムアウトを...
-
Java プログラム public class ...
-
javaのプログラミングで作るRPG...
-
インタフェイス実装と抽象クラ...
-
コマンドライン引数の*(アフ...
-
【初心者です】javaで平均値を...
-
Javaで日本語の出力が文字化けする
-
(大至急)JavaでATMもどきを作成
-
コンストラクタの引数の中のnew?
-
Java 最大公約数 gcd
-
C# DatagridviewにExcelシート...
-
randomで
-
GetterとSetterをやったのに。
おすすめ情報