質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

31952閲覧

java.lang.NullPointerException の発生原因が分からないです

m_s

総合スコア51

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2016/06/18 10:30

編集2016/06/18 10:36

###前提・実現したいこと
javaの初心者です。
円が表示されている画面内を10回クリック度に円の中のクリック回数と全体のクリック回数の割合を求めるプログラムを作っています。

###発生している問題・エラーメッセージ
Mouseクラス(MouseListenerを実装したもの)内のmouseClickedメソッドで、クリックした位置座標を格納しようとしたのですがエラーが出ました。

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

どこかがNullだとこのエラーがでることは分かったのですが、原因となるコードをみてもNullらしき場所がわかりませんでした。
###該当のソースコード

java

1class Mouse implements MouseListener { 2 3 public double mousepositionx; 4 public double mousepositiony; 5 6 @Override 7 public void mouseClicked(MouseEvent e) { 8 // TODO 自動生成されたメソッド・スタブ 9 point[point_num].setLocation(e.getPoint().getX(), e.getPoint().getY());//エラー箇所 10 11 mousepositionx = point[point_num].x; 12 mousepositiony = point[point_num].y; 13 14 montecarlo(point_num); 15 16 point_num ++; 17 18 repaint(); 19 } 20

point:取得座標を複数格納して円の中のクリック回数と全体のクリック回数の割合を計算するのに利用する
mousepositionx,y:取得座標を画面に表示するためのもの

###試したこと
最初に、クリックした座標を表示させるだけの機能を実装した時に変数pointを介さずに

java

1mousepositionx = point[point_num].x; 2mousepositiony = point[point_num].y;

から

java

1mousepositionx = e.getPoint().getX(); 2mousepositiony = e.getPoint().getY();

としたところ、きちんと座標値が表示されていたのでクリック時の座標値はきちんと取得できているようだったので、おそらく変数pointの導入でエラーが起きたのだと思うのですが・・・そこから先はわかりません。どこが間違っているのか教えて下さい。
###補足情報(言語/FW/ツール等のバージョンなど)
このプログラムを作る際には、ここを参考にしました。
千葉商科大学 商経学部 宮田研究室 プログラミングⅡ(http://www.cuc.ac.jp/~miyata/classes/prg2.H26/06/mouseevent.html)

どうかよろしくお願いします!!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

考えられる可能性としては
0. 変数point が null
0. point[point_num] に格納されている要素が null

のいずれかです。

変数pointを初期化している箇所、および要素を格納している箇所のコードを確認してみてください。

投稿2016/06/18 11:18

KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m_s

2016/06/18 11:24

回答ありがとうございました! pointがNullだったことがわかったのでその理由をまた別で質問しようと思います!
guest

0

ベストアンサー

真っ先に疑われるのは
1 point が null
2 point_num が範囲外の値
の 2 点ですが、これは確認されましたか?

投稿2016/06/18 10:45

Zuishin

総合スコア28662

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m_s

2016/06/18 11:20

pointのことまで確認していませんでした。 先ほどデバックしてみたところ、pointがnullになっていました。 ただ、pointのコンストラクタは作成したはずなので、なぜそうなったのかわかりませんでした。
m_s

2016/06/18 11:23

pointがNullになった理由をまた別で質問しようと思います 回答ありがとうございました!
Zuishin

2016/06/18 11:27

おめでとうございます。原因がわかって何よりです。 「範囲外」というのは、「配列の添え字より大きい数」ではなく、「point[point_num]にまだ使用できるデータが入っていない」つまり想定の範囲外という意味で書きましたが、確かに書き方が悪かったですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問