質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

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

Java

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

Q&A

解決済

1回答

1550閲覧

テキストファイルの書き込みで項目が重複してしまう

taka0145

総合スコア7

CSV

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

Java

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

0グッド

0クリップ

投稿2021/10/05 11:19

編集2021/10/05 11:20

前提・実現したいこと

以下のように表示させたいです。
名前,ID
田中,101
佐藤,102

発生している問題・エラーメッセージ

以下のように表示されます。 名前,ID 田中,101 名前,ID 佐藤,102

該当のソースコード

java

1import java.io.*; 2import java.io.BufferedReader; 3import java.io.InputStreamReader; 4import java.util.Scanner; 5import java.nio.file.Files; 6import java.io.File; 7import java.io.FileReader; 8import java.io.PrintWriter; 9import java.io.OutputStreamWriter; 10import java.io.FileNotFoundException; 11import java.nio.file.Path; 12import java.nio.file.Paths; 13import java.nio.charset.Charset; 14 15class Sample { 16 public static void main(String[] args)throws IOException{ 17 myLabel:while(true){ 18 System.out.println("<<メニュー>>"); 19 System.out.println("1.情報入力 \n2.データ表示 \n3.終了"); 20 Scanner scanner = new Scanner(System.in); 21 System.out.print("番号を入力して下さい>"); 22 int menunumber = scanner.nextInt(); 23 System.out.println(""); 24 25 switch(menunumber) { 26 case 1: 27 System.out.println("<情報入力>"); 28 System.out.println(""); 29 try { 30 31 32 File file = new File("Sample1.txt"); 33 PrintWriter filedata = new PrintWriter(new BufferedWriter 34 (new OutputStreamWriter(new FileOutputStream(file,true),"UTF-8"))); 35 BufferedReader data = new BufferedReader(new InputStreamReader(System.in)); 36 37 String[] koumoku = {"名前" ,"ID" }; 38 String name,id; 39 40 for(int i = 0; i < koumoku.length; i++){ 41 filedata.print(koumoku[i]); 42 if(i != koumoku.length -1){ 43 filedata.print(","); 44 } 45 } 46 filedata.println(""); 47 48 System.out.print("名前入力>"); 49 name = data.readLine(); 50 System.out.print("ID入力>"); 51 id = data.readLine(); 52 53 filedata.println(name + "," + id); 54 filedata.close(); 55 56 } catch (FileNotFoundException e) { 57 e.printStackTrace(); 58 59 } catch (IOException e) { 60 e.printStackTrace(); 61 } 62 break; 63 64 case 2: 65 System.out.println("<データ表示>"); 66 System.out.println(""); 67 Path file1 = Paths.get("Sample1.txt"); 68 try (BufferedReader data = Files.newBufferedReader(file1, Charset.forName("UTF-8"))) { 69 70 String text; 71 while ((text = data.readLine()) != null) { 72 System.out.println(text); 73 } 74 data.close(); 75 } catch (FileNotFoundException e) { 76 e.printStackTrace(); 77 } catch (IOException e) { 78 e.printStackTrace(); 79 } 80 break; 81 case 3: 82 System.out.println("<終了>"); 83 break myLabel; 84 85 86 } 87 } 88 } 89}

試したこと

while(true)よりも前段階で
String[] koumoku = {"名前" ,"ID" };
を表示させようとすると、、ファイルを読み込む前のため、エラーが出てしまいます。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

jimbe

2021/10/05 14:52 編集

プログラム起動時からどのように入力して「以下のように表示」されたのでしょうか。 System.in を Scanner と Reader の 2 つで利用し、かつループの度に Scanner/Reader を作るのは誤動作の元になります。どちらかに統一して、プログラム中一度だけ作成するようにしたほうが良いと思います。
taka0145

2021/10/05 15:21

メニューの情報入力を2回行い、データ表示させました。 失礼しました。訂正しておきます。
guest

回答1

0

ベストアンサー

方法の1つとしまして、現在ファイルの作成を FileOutputStream に任せているところを自前で管理することにし、プログラムが実行されたらまずファイルの有無をチェックし、有ったら何もせず、無かったら作成すると共にすぐ "名前,ID" を書き込んでしまえば良いでしょう。その後 while ループに入ってからはデータだけ追記すれば、ご希望に形になるのではないでしょうか。

投稿2021/10/05 17:46

jimbe

総合スコア13209

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問