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

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

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

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

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

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

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Q&A

2回答

300閲覧

javaのcsv出力して出したものの改造

repurica

総合スコア12

CSV

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

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

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

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

0グッド

0クリップ

投稿2019/07/15 11:07

編集2019/07/15 11:15

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
CSVで出力したものを改造したい

伊藤 正明,いとう まさあき,男
川上 麻衣,かわかみ まい,女
山口 聡,やまぐち さとし,男
村田 真知子,むらた まちこ,女
松本 若菜,まつもと わかな
坂下 瑞穂,さかした みずほ
大和田 晴子,おおわだ はるこ

このように表示されるものを次のように表示させたい。

1: 1:伊藤 正明 2:いとう まさあき 3:男
2: 1:川上 麻衣 2:かわかみ まい 3:女
3: 1:山口 聡 2:やまぐち さとし 3:男
4: 1:村田 真知子 2:むらた まちこ 3:女
5: 1:松本 若菜 2:まつもと わかな
6: 1:坂下 瑞穂 2:さかした みずほ
7: 1:大和田 晴子 2:おおわだ はるこ

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

エラーメッセージ

該当のソースコード

java

ソースコード
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class CSVFileViewer {

/** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here String filepath = "file.csv"; if (Files.exists(Paths.get(filepath))) { System.out.println("ファイルあります"); } else { System.out.println("ファイルありません"); System.exit(0); } if (Files.isReadable(Paths.get(filepath))) { System.out.println("ファイル読み込めます"); } else { System.out.println("ファイル読み込めません"); System.exit(0); } try (BufferedReader br = Files.newBufferedReader(Paths.get(filepath))) { String line; while ((line = br.readLine()) != null) { String[] cols = line.split(",", -1); // 文字列を,で区切って、,を消すため-1する。 for (String datum : cols) { System.out.print(datum + "\t"); } System.out.println(" "); } } catch (IOException e) { throw new RuntimeException(e); } }

}

試したこと

いろいろ試しましたがわかりませんでした

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

file.csvの中身は
伊藤 正明,いとう まさあき,男
川上 麻衣,かわかみ まい,女
山口 聡,やまぐち さとし,男
村田 真知子,むらた まちこ,女
松本 若菜,まつもと わかな
坂下 瑞穂,さかした みずほ
大和田 晴子,おおわだ はるこ
です。
ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

一気に文字列加工までせず、CSVを読み込むオブジェクトを作りそれを表示部と分ける場合
(文字列を結合する部分は、StringBuilderなどを使わないで表現しています)

java

1import java.io.BufferedReader; 2import java.io.File; 3import java.io.FileReader; 4import java.io.IOException; 5import java.util.Arrays; 6import java.util.List; 7import java.util.stream.Collectors; 8 9public class CSVReaderSample { 10 public static void main(String argv[]) throws Exception { 11 CSVReaderSample sample = new CSVReaderSample(); 12 sample.read("data.csv"); 13 } 14 15 public void read(String filename) { 16 String classpath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); 17 18 File csvfile = new File(classpath + "/" + filename); 19 try ( 20 BufferedReader bufr = new BufferedReader(new FileReader(csvfile)); 21 ) { 22 // CSVの収集 23 List<List<String>> csv = 24 bufr.lines() 25 .map(line -> getLineValues(line)) 26 .collect(Collectors.toList()); 27 28 //出力 29 output(csv); 30 31 } catch (IOException e) { 32 e.printStackTrace(); 33 // ファイルの有無などのエラーメッセージ 34 } 35 } 36 37 /** 38 * CSVデータの表示部 39 * @param csv 収集したCSV 40 */ 41 private void output(List<List<String>> csv) { 42 int lineNumber = 0; 43 String str = ""; 44 for(List<String> line:csv) { 45 str = str + ++lineNumber + ": "; 46 47 int colNumber = 0; 48 for(String col:line) { 49 str = str + ++colNumber + ": " + col + " "; 50 } 51 52 str = str + "\r\n"; 53 } 54 55 System.out.println(str); 56 } 57 58 59 public static List<String> getLineValues(String line) { 60 return Arrays.stream(line.split(",")).collect(Collectors.toList()); 61 } 62} 63

実行結果:

csv

11: 1: "伊藤 正明" 2: "いとう まさあき" 3: "男" 22: 1: "川上 麻衣" 2: "かわかみ まい" 3: "女" 33: 1: "山口 聡" 2: "やまぐち さとし" 3: "男" 44: 1: "村田 真知子" 2: "むらた まちこ" 3: "女" 55: 1: "松本 若菜" 2: "まつもと わかな" 66: 1: "坂下 瑞穂" 2: "さかした みずほ" 77: 1: "大和田 晴子" 2: "おおわだ はるこ"

投稿2019/07/15 16:57

A-pZ

総合スコア12011

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

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

0

Java

1public static void main(String[] args) { 2 String filepath = "file.csv"; 3 if (Files.exists(Paths.get(filepath))) { 4 System.out.println("ファイルあります"); 5 } else { 6 System.out.println("ファイルありません"); 7 System.exit(0); 8 } 9 10 if (Files.isReadable(Paths.get(filepath))) { 11 System.out.println("ファイル読み込めます"); 12 } else { 13 System.out.println("ファイル読み込めません"); 14 System.exit(0); 15 } 16 17 try (BufferedReader br = Files.newBufferedReader(Paths.get(filepath))) { 18 String line; 19 int rowNo = 1; 20 int colNo = 1; 21 22 while ((line = br.readLine()) != null) { 23 System.out.print(rowNo + ":\t"); 24 String[] cols = line.split(",", -1); // 文字列を,で区切って、,を消すため-1する。 25 for (String datum : cols) { 26 System.out.print(colNo++ + ":" + datum + "\t"); 27 } 28 System.out.println(" "); 29 rowNo++; 30 colNo = 1; 31 } 32 } catch (IOException e) { 33 throw new RuntimeException(e); 34 } 35} 36

投稿2019/07/15 12:37

root_jp

総合スコア4666

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問