JAVAを勉強しています。ファイルの読み込み、入

Writer: admin Type: regalmach Date: 2019-01-08 00:00
JAVAを勉強しています。ファイルの読み込み、入力チェックテストを行っていますが、読み込んだファイルテキストに対して、1行目が上手くチェックできません。2行目以後は普通にできます。原因がわかりませんので、教えてください。ソースコードは以下です。------------------------------------------File file = new File(filename);String str_ID = "1111";//ファイルが存在するか確認するif(file.exists()) { //FileReaderクラスのオブジェクトを生成する FileReader filereader = new FileReader(file); BufferedReader br = new BufferedReader(filereader); List<String[]> csvData = new ArrayList<>(); //読み込んだファイルを1行ずつ処理する String line; while ((line = br.readLine()) != null) { String[] cols = line.split(","); csvData.add(cols); } for ( String[] row : csvData ) { String str_nam = row[0]; String str_ps = row[1]; String str_mon = row[2]; if(str_ID.equals(str_nam)) { System.out.println("ID : " + str_nam); System.out.println("PS : " + str_ps); System.out.println("Mn : " + str_mon); }else { System.out.println("IDが一致しません"); System.out.println("ID : " + str_nam); } } //終了処理 br.close();} else { System.out.println("ファイルは存在しません");}------------------------------------------読み込みファイルは以下のCSVとなります。1111,1111,11112222,2222,22223333,3333,33334444,4444,4444共感した0###わたしの環境では上手く動作しました。でも、念のため、if(str_ID.equals(str_nam)) {ではなく、if(str_ID.compareTo(str_nam)==0) {とやってみてください。ナイス0
###自己解決しました。すみません、お騒がせしました。CSVファイルを作成した際、BOM付で保存したのが原因です。でも、compareToメソッドもあることがわかったので、いい勉強になりました。回答ありがとうございました。ii3さんもありがとうございました。###回答する側はあなたのプログラムの仕様を知りません。・何をするプログラムなのか・本来あるべき実行結果と実際の実行結果の差異・チェックの内容、及び正常ルートになる値と異常ルートになる値などを詳細に記載してください。それから可能な限りコンパイルが通る状態で、全ソースの提示をお願いします。コンパイル出来ないと不足分を回答者側が想像で補うしかありません。それが原因で問題点が複雑化することもありえます。また記載れていないところで不具合が起きている可能性も否定できませんので。ナイス0

 

TAG