前提・実現したいこと
以下の参考資料に記載されているコードを元に
Javaのオブジェクト指向で書かれたプログラムで
csvファイルを読み込み形式を変更した上で新たなcsvファイルを
書き出そうとしています。
以下excelですが、csv形式にしたファイルを読み書きします。
発生している問題・エラーメッセージ
参考資料ではsetterとgetterを用いてcsvファイルの読み書きをしていましたが、
コンストラクタを用いる場合はどのようにコードを書けばいいのかわからず
困っています。
以下、コンストラクタを用いてインスタンスを生成したコードですが、
ここからどのようにしてcsvファイルからデータを読み書きすればいいのかわかりません。
package test; class StudentCard{ int number; int length; int width; int hight; int displacement; //StudentCardクラスに追加したコンストラクタ StudentCard(int number, int length,int width, int hight, int displacement){ System.out.println("Carクラスのコンストラクタが呼びだされました"); this.number = number; this.length = length; this.width = width; this.hight = hight; this.displacement = displacement; } } public class ConstructorExample { public static void main(String[] args) { //StudentCardクラスのインスタンスを生成 Car a = new Car(1122, 5000, 2500, 1700, 2000); //ここにcsvファイルから読んだものを入力して複数のインスタンスを作成したい System.out.println("aのnumberの値は" + a.number); //printlnで出力ではなく。csvファイルに出力したい } }
該当のソースコード
以下、参考資料と同様のコードでsetterとgetterを使って
csvからデータを読み込み、オブジェクトのインスタンスを作成し、csvファイルに出力しています。
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 number) { 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} 44
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 outputLine.println(); 50 } 51 //開いていた出入力ファイルを閉じる 52 InputLine.close(); 53 outputLine.close(); 54 }catch(IOException e) { 55 System.out.println("ファイルが開けません"); 56 } 57 58} 59 60} 61
補足情報(FW/ツールのバージョンなど)
Eclipse Java EE IDE for Web Developers.
Version: Oxygen.3a Release (4.7.3a)
Microsoft Excel for Mac バージョン16.13
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/05/24 01:04