🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

1717閲覧

Javaのオブジェクト指向でcsvファイルを読み込み形式を変更した後の問題について

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2018/05/23 01:33

前提・実現したいこと

前回の質問に続き、
参考資料に記載されているコードを元に
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

public void setNumber(int i) { this.number = number; }

↑。。。何をsetNumber()しとんねん。。。

投稿2018/05/23 01:55

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

csvを出力する際に改行してないことが原因です。

投稿2018/05/23 01:49

KSwordOfHaste

総合スコア18402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/23 01:56

ご回答いただきましてありがとうございます。 outputLine.println();を出力に加えると改行の問題は解決しましたが、 ナンバーの部分は「0」のままで表示されません。こちらはどうすれば良いでしょうか。
KSwordOfHaste

2018/05/23 01:58

tkturboさん回答をご覧ください。コードはご自分でちゃんとデバッグすべきと思います。
退会済みユーザー

退会済みユーザー

2018/05/23 02:13

ご回答いただきましてありがとうございます。 以後、注意します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問