前提・実現したいこと
前回の質問に続き、
参考資料に記載されているコードを元に
Javaのオブジェクト指向で書かれたプログラムで
csvファイルを読み込み形式を変更した上で新たなcsvファイルを
書き出そうとしています。
発生している問題・エラーメッセージ
carSample.csvをプロジェクトのトップフォルダに置き、
プログラムはエラーなどは表示されずに実行されたのですが、
参考資料と同様に
以下のヘッダーとデータを持つcsvファイルを入力すると
画像はexcelですがこの後、csv形式に変換して保存しています。
出力carSampleout.csvでは以下のように表示され、
排気量(cc)の桁が一つ増加し、
ナンバーの列が出力されないという問題が起こっています。
正しく出力させるようにコードをどのように修正するべきか
アドバイスをいただきたいです。
該当のソースコード
Testクラス
Java
1//Java.ioパッケージ 2import java.io.BufferedReader; 3import java.io.FileReader; 4import java.io.FileWriter; 5import java.io.IOException; 6import java.io.PrintWriter; 7//Java.utilパッケージ 8import java.util.ArrayList; 9import java.util.List; 10import java.util.StringTokenizer; 11 12public class Test { 13 public static void main(String[] args) { 14 List<Car> carList = new ArrayList<Car>(); //データ格納用リスト 15 String input = "carSample.csv";//String型でファイル名を指定する 16 String output = "carSampleout.csv"; 17 18 try { 19 BufferedReader InputLine = new BufferedReader(new FileReader(input)); 20 PrintWriter outputLine = new PrintWriter(new FileWriter(output)); 21 String line; 22 23 line = InputLine.readLine(); //ヘッダを読み込む 24 outputLine.println(line); //ヘッダを書き込む 25 26 //1行ずつ読み込み 27 while((line = InputLine.readLine()) != null) { //String変数lineに格納 28 StringTokenizer st = new StringTokenizer(line); //lineを分割の対象にする 29 30 Car car = new Car(); //Carクラスのインスタンスを作成 31 //フィールドの設定を行う 32 //String型をInteger型に変更 33 car.setNumber(Integer.parseInt(st.nextToken(","))); 34 car.setLength(Integer.parseInt(st.nextToken(","))); 35 car.setWidth(Integer.parseInt(st.nextToken(","))); 36 car.setHight(Integer.parseInt(st.nextToken(","))); 37 car.setDisplacement(Integer.parseInt(st.nextToken(","))); 38 39 carList.add(car); //リストに追加する 40 } 41 42 //carListの中身を順に出力する 43 for(Car car : carList) { 44 outputLine.print(car.getNumber() + ","); 45 outputLine.print(car.getLength() + ","); 46 outputLine.print(car.getWidth() + ","); 47 outputLine.print(car.getHight() + ","); 48 outputLine.print(car.getDisplacemet()); 49 } 50 //開いていた出入力ファイルを閉じる 51 InputLine.close(); 52 outputLine.close(); 53 }catch(IOException e) { 54 System.out.println("ファイルが開けません"); 55 } 56 57} 58 59} 60
Carクラス
Java
1 2public class Car { 3 //フィールド 4 //メンバはprivate, メソッドはpublic 5 private int number; 6 private int length; 7 private int width; 8 private int hight; 9 private int displacement; 10 11 //メンバにはgetter, setterメソッドでアクセスする 12 public int getNumber() { 13 return number; 14 } 15 public void setNumber(int i) { 16 this.number = number; 17 } 18 public int getLength() { 19 return length; 20 } 21 public void setLength(int length) { 22 this.length = length; 23 } 24 public int getWidth() { 25 return width; 26 } 27 public void setWidth(int width) { 28 this.width = width; 29 } 30 public int getHight() { 31 return hight; 32 } 33 public void setHight(int hight) { 34 this.hight = hight; 35 } 36 public int getDisplacemet() { 37 return displacement; 38 } 39 public void setDisplacement(int displacement) { 40 this .displacement = displacement; 41 } 42 43}
補足情報(FW/ツールのバージョンなど)
Eclipse Java EE IDE for Web Developers.
Version: Oxygen.3a Release (4.7.3a)
Microsoft Excel for Mac バージョン16.13
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。