String名前、BigDecimal勝った数・負けた数をもつPlayerインスタンスとUserBeanクラスがありゲームが終わった後CSVファイルの中に同じ名前があれば勝敗を合計してリストに入れ、この後また書きこむという操作がしたいです。
次のプログラムで最後のファイルを閉じたすぐ後にjava.lang.NullPointerException
が出てくるのですがなぜでしょうか。
Java
1ICsvBeanReader inFile = new CsvBeanReader( new FileReader( RECORD_DIRECTRY), CsvPreference.EXCEL_PREFERENCE); 2 List<UserBean> scoreList = new ArrayList<>(); 3 try { 4 final String[] header = inFile.getHeader( true); 5 UserBean user = null; 6 while ( (user = inFile.read( UserBean.class, header, UserBean.processors)) != null) { 7 if ( user.getName().equals( humanPlayer.getName())) { 8 user.setWinCount( user.getWinCount().add(humanPlayer.getWinCount())); 9 user.setLoseCount( user.getLoseCount().add(humanPlayer.getLoseCount())); 10 scoreList.add( user); 11 } 12 else { 13 user.setName(Player.getName()); 14 user.setWinCount(Player.getWinCount()); 15 user.setLoseCount(Player.getLoseCount()); 16 scoreList.add( user); 17 } 18 } 19 } 20 finally { 21 inFile.close(); 22 }
スタックトレースはこのようになっています。
Java
1xception in thread "main" java.lang.NullPointerException: nameMapping should not be null 2 at org.supercsv.io.CsvBeanReader.read(CsvBeanReader.java:185) 3 at jankengame.Janken.operateResult(Janken.java:77) 4 at jankengame.Janken.startGame(Janken.java:67) 5 at jankengame.Main.main(Main.java:19)
StackTraceを貼ってください。
NullPointerException の理由は基本的に null の変数にアクセスしたから
回答1件
あなたの回答
tips
プレビュー