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

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

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

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

Q&A

解決済

1回答

2715閲覧

csvファイルから読み込んだデータを配列かArrayListに格納し、int型に変換

Apple_0906

総合スコア1

Java

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

0グッド

0クリップ

投稿2021/12/04 08:45

編集2021/12/04 08:50

前提・実現したいこと

csvファイルから読み込んだデータを配列かArrayListに格納し、int型に変換したい。

■748行、1024列の各マスに数値が記載されているcsvファイルから読みこんだデータをint型に変換して取り扱おうとしていますが、実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ Exception in thread "main" java.lang.NullPointerException

該当のソースコード

Java

1import java.io.*; 2public class extract { 3 // CSVファイルを2次元配列に読み込み 4 public static void main(String[] args) { 5 BufferedReader br = null; 6 String file_img_L = "img_L.csv"; // 入力ファイル 7 // データの最大個数 8 final int MAX_DATA_NUMS = 1200; 9 // データを格納する2次元配列 10 String[][] data_img_L = new String[MAX_DATA_NUMS][]; 11 try { 12 File file = new File(file_img_L); 13 br = new BufferedReader(new FileReader(file)); 14 // readLineで一行ずつ読み込む 15 int index = 0; 16 String line; 17 while ((line = br.readLine()) != null) { 18 // lineをカンマで分割し、配列dataに保持 19 data_img_L[index] = line.split(","); 20 index++; 21 } 22 } 23 catch (Exception e) { 24 System.out.println(e.getMessage()); 25 } finally { 26 try { 27 br.close(); 28 } catch (Exception e) { 29 System.out.println(e.getMessage()); 30 } 31 } 32 33 int[][] img_L = new int[MAX_DATA_NUMS][]; 34 for (int y = 0; y < MAX_DATA_NUMS; y++) { 35 for (int x = 0; x < data_img_L[y].length; x++) { 36 img_L[y][x] = Integer.parseInt(data_img_L[y][x]); 37 } 38 } 39 40 // 配列に格納したデータを表示(確認用) 41 System.out.print(img_L[0][0]); 42 43 } 44}

試したこと

ArrayListにdataを入れて要素数を指定しない方法も試してみたものの同様のエラーが確認されました。
おそらくint型に変換するimg_L[y][x] = Integer.parseInt(data_img_L[y][x]);の部分でエラーが生じています。

補足情報(FW/ツールのバージョンなど)

IntelliJ IDEA Community Edition 2021.2.3

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

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

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

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

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

hoshi-takanori

2021/12/04 10:48

Java の 2 次元配列は、実際には配列の配列です。で、 int[][] img_L = new int[MAX_DATA_NUMS][]; だと実際にデータを格納する配列は作られないので、それを作る必要があります。(たぶん絵を描かないと何も伝わらない気がする…。)
Apple_0906

2021/12/04 13:44

ありがとうございます! 列の数は決め待っていないので要素は指定したくなかったのですが、一旦わかっている前提で指定して実装したところ動きました。
hoshi-takanori

2021/12/04 13:58

列数が固定ならそれで構いませんが、可能性としては行によって列数が違う可能性があるので、 img_L[y] = new int[data_img_L[y].length ]; するという手もあります。
guest

回答1

0

ベストアンサー

java.lang.NullPointerException

というのはnullの変数に対して操作しようとしたときにでます
この例外(エラー)がでた行、その前の行あたりに出てきた変数のナカミをチェックしてみよう

投稿2021/12/04 10:26

y_waiwai

総合スコア87800

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問