• ベストアンサー

Java NullPointerException

簡単な配列を作っているのですが、現在のコードについてどうしても以下のエラーが解決できません。 java.lang.NullPointerException 今作っているコードは ArrayList<Integer> intList = new intList<Integer>(); intList.add(1); といういうようなシンプルなものです。 ArrayList<Integer>ではなく、int[]にしてもダメでした。(正直この2つの違いもよく分かっていません。) 解決方法(+よろしければ違いの説明も)を教えて頂ければと思います。 宜しくお願い致します。

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

  • ベストアンサー
回答No.4

それぞれの回答欄にいろいろ補足されていますが、それでも要領を得ません。 困っている問題が再現するコンパクトなプログラムの全文を掲載したほうが ~~~~~~~~~~~~~~~~~~~~~~~~~~ 有用な回答を得られる可能性が高まるでしょう。 そしてひょっとしたら、そのコンパクトなプログラムを書いているうちに ご自身で問題に気が付くかもしれません。

codingbeginner
質問者

お礼

確かにご指摘ごもっともです。 全文は載せられないと思っていたら、コンパクトなコードで再現させてから載せるというふうにやるのですね! プログラミングというかこういったサイトについて初心者で、質問の仕方もよく分かっておりませんで失礼しました。 仰る通り、コンパクトなプログラムを書いている内にコード全体がシンプル化したため、どこがエラーの原因だったか気付くことが出来ました! ご指導頂きありがとうございました!

その他の回答 (4)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.5

>ArrayList<Integer> newList = new ArrayList<Integer>() >newList = objABC.getList(); >newList.add(1); 上記の最後でNullPointerExceptionがスローされるというのであれば objABC.getList() がnullを返してるんでしょう(それでnewListを上書きしてるので最初のnew ArrayList<Integer>()は意味なし)。 objABC.getList()が何を返してるか確認してみてください。

codingbeginner
質問者

お礼

ありがとうございます。確かにobjABC.getList()がnullを返していました!

  • teketon
  • ベストアンサー率65% (141/215)
回答No.3

>違いにつきましてはint型配列とInteger型を入れるArrayList型のオブジェクト変数ということですか? そう。 >それでは、int型配列はオブジェクト変数ではないということですか? そう。で、これがJavaでは微妙で、配列はオブジェクトなので、オブジェクト変数と呼んでもいいです。 呼ばなくてもいいです。 >また、dについてのコードはこれもコンストラクタと言うことができるのですか?(右辺の始めにnewをつけるのがコンストラクタの書き方と勉強したものですから。) 前段のJavaの配列はオブジェクトなので、内部的にはコンストラクタが起動しています。 ただし、経験上配列に対してコストラクタが呼ばれたなんて言い方はしません。 初期化と呼んでいます。

codingbeginner
質問者

お礼

おお、そうですか。詳しい解説をありがとうございます!! ところで、プログラムでタイポ部分を修正しても上手くいきません。 と、、思っていたら別の箇所に問題がありました。 この場合、内容が別のものになるので投稿し直した方がよろしいのでしょうか? 長くないのでこの場をお借りするなら、 オブジェクトを別に作成していて public ObjABC(double X, double Y, int[] intList) { //... } public ArrayList<Integer> getList(){ return intList; } のある上で、 ArrayList<Integer> newList = new ArrayList<Integer>() newList = objABC.getList(); newList.add(1); と書いて、ここで最後の行でエラーが起きてしまったのです。 宜しくお願い致します。

  • akubi_m
  • ベストアンサー率22% (12/54)
回答No.2

>ArrayList<Integer> intList = new intList<Integer>(); そもそもこれはコンパイルが通らないのでは? ArrayList<Integer> intList = new ArrayList<Integer>(); でないとだめです。 これでコンパイルして実行したら問題ないかと思います。

codingbeginner
質問者

補足

すみません。そこは単純にこの質問上でのタイポです。。 二段目の方でEclipse上ではエラーが出ませんが、実行させると上記のようなエラーが出てきます。

  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

Integer型のデータを入れるArrayList型のオブジェクト変数a ArrayList<Integer> a = new ArrayList<Integer>(); 以下の変数b、c、dは同じ意味。 int型配列の変数b(要素は1と2と3) int[] b = new int[]{1,2,3}; int型配列の変数c(要素は1と2と3) int c[] = new int[]{1,2,3}; int型配列の変数d(要素は1と2と3) int[] d = {1,2,3}; これらを踏まえて、こうしたいのでは? ArrayList<Integer> intList = new ArrayList<Integer>(); intList.add(1);

codingbeginner
質問者

補足

ええ、そうです。最後の通りにしたいのです。 違いにつきましてはint型配列とInteger型を入れるArrayList型のオブジェクト変数ということですか? それでは、int型配列はオブジェクト変数ではないということですか? また、dについてのコードはこれもコンストラクタと言うことができるのですか?(右辺の始めにnewをつけるのがコンストラクタの書き方と勉強したものですから。)