- ベストアンサー
JavaのHashtableの配列化について質問
- JavaのHashtableの配列化についてわからない事があります。ローカル変数の使い方がおかしいのでしょうか?おかしなことを言っているかもしれません。
- 最初に宣言したローカル変数oを使い、メインメソッドでその値を決め、その数だけTestメソッドをループさせたいと思っています。しかし、エラーが出てしまい実行できません。
- Testメソッド内でHashtableを使用して要素を追加し、取得して表示させたいです。具体的には「明日」に対応する「monday」、「明後日」に対応する「tuseday」を表示させたいです。どのように修正すれば良いでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> ローカル変数の使い方がおかしいのでしょうか? いいえ。 クラスの宣言の仕方や変数の定義の仕方などそれ以外のところがおかしいように思います。 | import java.util.Hashtable; と | public class ファイル名から.javaをとったもの { と | } が無いように思うのですが、これは省略しているのでしょうか? > 最初にローカル変数のoを宣言し、それをメインメソッドで中身をきめ、その分だけTestメソッドをループさせて というなら、メインメソッドでHashtableクラスの配列もnewし、配列の中身のインスタンスもnewしてあげた方が良いと思います。 > public static int o; > public static Hashtable[] hashArray = new Hashtable[o]; について、 class変数としてoとhashArrayを定義していると思いますが、class変数の作成はclassを生成したとき(static変数以外の場合)かJavaのプログラムを実行したとき(static変数の場合)に行われます。 今回、static変数なのでこのプログラムを実行したときに初期化を行いますが、oが決まっていないのでnew Hashtable[o]でどの大きさの配列を作っていいかわからず、エラーになると思います。 また、hashArrayを実際に使うときにはhashArray[0]などにhashArray[0] = new Hashtable();するなどして、Hashtableクラスのインスタンスを予め代入しておく必要がありますが、プログラムを見る限りHashtableクラスのインスタンス生成は行われていないようです。 また、表示例のような表示にするには、Hashtableクラスの変数及びインスタンスは必要でも、Hashtableクラスの配列は必要ないように思います。(これは誤解している可能性が高いので、このプログラムでやろうとしていることをもう少し詳しく説明してください。) Hashtable hash = new Hashtable();としてHashtableクラスのインスタンスをhashに代入し、Hashtableのインスタンスへのデータの追加、削除はhash.put("月曜日","monday");で良いのではないでしょうか?
お礼
夜分遅く有難う御座います! 理解しました!