emily-08
@emily-08 (えみり)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

NullPointerExceptionエラー

Q&A

Closed

解決したいこと

CSVファイルから読み込んだデータを表示させるのがゴールのプログラムです。
戻り値、引数をどう設定したらいいのか分かりませんでした。
ご教授頂けると助かります。

発生している問題・エラー

Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "<local0>" is null
	at Sub.bbb(Sub.java:113)
	at Main.main(Main.java:7)

該当するソースコード

Main.java
public class Main {

	public static void main(String[] args) {
		Sub.aaa();
		Sub.bbb();
	}

}
Sub.java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;


public class Sub {
    private static Personal[] list;
	public static void aaa() {

		// CSVファイルのパス
		Path path = Paths.get("./Data.csv");

		// 読み込んだCSVファイルの情報を格納するリスト
		List<String> csvList = new ArrayList<>();

		try {

			// CSVファイル読み込み
			csvList = Files.readAllLines(path);

		} catch (IOException e) {
			System.out.println("ファイルの読み込みに失敗しました");
		}

		ArrayList<Personal> list = new ArrayList<>();

		//CSVファイルの情報を格納したリスト分繰り返し
		for (String rows : csvList) {

			//カンマ区切りの配列を作成
			String[] rowArray = rows.split(",");

			//インスタンス生成
			Personal bean = new Personal();

			//Personalにデータを入れる
			bean.setName(rowArray[0]);
			bean.setAddress(rowArray[1]);
			bean.setTel(rowArray[2]);
			bean.setAge(rowArray[3]);
			list.add(bean);
		}
		
	}

	public static void bbb() {
		// Personalのデータを取り出して表示
		for (Personal b : list) {
			System.out.println("[" + b.getName() + "][" + b.getAddress() + "][" + b.getTel() + "][" + b.getAge() + "]");
		}
	}
}
Personal.java
public class Personal {

	//名前
	private String name;
	//住所
	private String address;
	//電話番号
	private String tel;
	//年齢
	private String age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

}
0

1Answer

引数と戻り値を設定したいということなので,基本的には以下のようなを取ることになります.

Sub.java
-    public static void aaa() {
+    public static List<Personal> aaa() {
         //中略
+        return list;
     }

-    public static void bbb() {
+    public static void bbb(List<Personal> list) {
Main.java
-		Sub.aaa();
-		Sub.bbb();
+		List<Personal> list = Sub.aaa();
+		Sub.bbb(list);

コードの解説をする前に,ひとまず基礎を学習されることを推奨します.

2Like

Comments

  1. @emily-08

    Questioner

    ご教示ありがとうございます。
    こちらを見て学習させて頂きます。

Your answer might help someone💌