アプリ版:「スタンプのみでお礼する」機能のリリースについて

登録内容をCSVファイルへ保存する機能を実装したプログラムを作成したいんですが、作成方法が分かりません。

【実装させたい機能】
・「1.登録」で会員情報を登録後、「3.保存」を実行する事でCSV形式のファイルへ保存(書込)させたい。
・CSVファイルの中身は、「JAVA0001 , ○○○○ , 1999/01/01 , 090○○○○○○○○」のようなカンマ区切りのCSV形式で会員情報が表示される。

【現在の状況】
・デスクトップにKaiinフォルダを作成し、その中に「Kaiin.java」と「KaiinSystem.java」の2個ファイルを作成。(2ファイルは連動しています)
・コマンドプロンプトで、「KaiinSystem.java」のほうをコンパイル実行。
・下記メニュー画面が表示されます。
---------------------------------------
◆メニュー番号を選択してください。
  1.登録 2.照会 3.保存 4.終了
・メニュー番号 >>
-----------------------------------------
・メニュー番号に1を入力実行し会員を登録します。登録後は下記画面のようになります。
-----------------------------------
[会員番号]JAVA0001
[名前]○○○○
[生年月日]1999/01/01
[電話番号]090○○○○○○○○
-----------------------------------
・登録後、「3.保存」を実行すると、下記画面のエラーメッセージが表示されうまく保存(ファイルへ書込)ができません。
一応CSVファイルは作成されますが、中身を確認しても登録した会員情報が反映されてなく空白状態です。
----------------------------------------------------------------------
会員情報を保存しました。
Exception in thread "main" java.lang.NullPointerException
at kaiin.KaiinSystem.procSav(KaiinSystem.java:119)
at kaiin.KaiinSystem.main(KaiinSystem.java:59)
----------------------------------------------------------------------


【質問】
<KaiinSystem.java>ソースコードをどのように修正を行えば、「3.保存」を実行した際に登録した会員情報が反映されたCSVファイルとして保存(書込)できますか??
下記に<KaiinSystem.java>のほうのソースコードを貼り付けましたので、教えて頂けると助かります。
宜しくお願いします。

※<KaiinSystem.java>のソースコードは文字数制限の関係上、「3.保存」と【現在の状況】に貼り付けたエラーメッセージ画面が指摘している部分(59・119行目)のみ抜粋して貼り付けました。
<Kaiin.java>のほうのソースコードにつきましては、自分の質問履歴の中の「会員情報登録プログラムの作成について」のリンク先を開いていただき、No.1の下の「この回答への補足」に貼り付けております。
また、同じくNo.1の下の「この回答へのお礼」に<KaiinSystem.java>のソースコードも貼り付けられておりますが、色々修正を行い現在は全体的に全く違うソースコードとなっております。
<Kaiin.java>は現在も同じソースコードです。


<KaiinSystem.java>ソースコード
--------------------------------------------------------------------
・・・

case MENU_SAV://保存処理
System.out.println("会員情報を保存しました。");
ks.procSav(); //エラー(1)59行目
break;

・・・

//3.保存
private void procSav(){
try {
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("Kaiin.csv")));
int i = 0;
writer.println(kinList.get(i).toCsvFormat()); //エラー(2)119行目
for (i = 0; i < kinList.size(); i++){
}
writer.close();
} catch (IOException e) {
System.out.println(e);
}
}

・・・
--------------------------------------------------------------------

A 回答 (1件)

java.lang.NullPointerException


ということは、該当個所でnullポインタに対してなにか操作をしようとした、と予想されます。
a.method() で a=null になっているとか。

> at kaiin.KaiinSystem.procSav(KaiinSystem.java:119)
> writer.println(kinList.get(i).toCsvFormat()); //エラー(2)119行目

とあるので、
writer がnull
kinListがnull
kinList.get(i)がnull
が考えられます。

どれがnullになっているかを確認し、それがnullになる原因を探りましょう。


java.lang.NullPointerException は、プログラム作成中にはよく出会う例外です。
最低限、上記の「どれがnullになっているか」くらいは、人に聞かずに、自分で調べるようにしましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!