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

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

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

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Java

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

Q&A

解決済

1回答

1348閲覧

エラーjava.lang.NullPointerException

00_x9925

総合スコア12

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Java

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

0グッド

0クリップ

投稿2020/06/08 09:49

javaで分類器を作る課題を行っています.
ソースコードにエラーは出ないのですが,なぜか実行後にエラーが発生して止められてしまいます.

java

1import java.io.BufferedReader; 2import java.io.File; 3import java.io.FileReader; 4import java.io.IOException; 5 6public class term2_2 { 7 8 public static void main(String args[]) { 9 //処理対象の行数 10 int cnt_line = 1; 11 //データの各要素を格納 12 String[][] data = new String[5][150]; 13 double[] cls = new double[100]; 14 15 double judge = 0; 16 int miss = 0; 17 18 try { 19 File f = new File("iris.txt"); 20 BufferedReader br = new BufferedReader(new FileReader(f)); 21 22 String line = br.readLine(); 23 24 for (int n=0; n<100; n++) { 25 for (int i = 0; i < 5; i++) { 26 //文字列を分割して配列に格納 27 String[] iris = line.split(" ", 0); 28 data[i][cnt_line - 1] = iris[i]; 29 } 30 judge = 0.33 + Double.parseDouble(data[0][cnt_line])*0.23 31 + Double.parseDouble(data[1][cnt_line])*(-0.38) 32 + Double.parseDouble(data[2][cnt_line])*(-0.05) 33 + Double.parseDouble(data[3][cnt_line])*(0.47); 34 35 if(judge > 0) cls[cnt_line] = 1; 36 else cls[cnt_line] = 2; 37 38 if(Double.parseDouble(data[4][cnt_line]) != cls[cnt_line]) miss++; 39 40 cnt_line++; 41 line = br.readLine(); 42 } 43 44 System.out.println("百分率:"+(100-miss)); 45 46 br.close(); 47 } catch (IOException e) { 48 System.out.println(e); 49 } 50 } 51 52}

このコードを実行すると以下のエラーメッセージが表示されてしまいます.

java

1Exception in thread "main" java.lang.NullPointerException 2 at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838) 3 at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) 4 at java.lang.Double.parseDouble(Double.java:538) 5 at term2.term2_2.main(term2_2.java:32) 6

どなたか解決策をご教授ください

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

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

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

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

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

m.ts10806

2020/06/08 09:54

エラーとなった行数もエラーで教えてくれてます。その前後デバッグされましたか?
gentaro

2020/06/08 13:06

エラーを解決する事も課題のうちでしょう。 どうしてもわからないのなら先生に質問しましょう。
guest

回答1

0

ベストアンサー

解決の指針を書きます。

  • スタックトレースより、ソース32行目のparseDoubleNullPointerExceptionが発生している
  • 32行目のparseDoubleの引数data[2][cnt_line]がNullである可能性がある([2]以外も怪しい)
  • data[0から4][cnt_line]にちゃんと数字が入っているかどうか、デバッガで変数を覗くなりSystem.out.printlnで出力してみるなりで調べてみる

こうやってスタックトレースに出てくる例外発生の行と例外の種類から原因を類推、特定していきます。

投稿2020/06/08 22:04

hope_mucci

総合スコア4447

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問