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

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

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

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1770閲覧

【Java】CSVファイル出力時 メソッド呼び出し方法

koumm

総合スコア1

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/10/17 04:25

編集2020/10/18 13:58

前提・実現したいこと

JavaでCSVファイルを編集して別ファイルに出力するプログラムを作成しています。
今回はBufferdReaderのreadLineメソッドで読み込み、指定した文字列のみを含む行であった場合
都度書き込みメソッドを呼び出したいです。
書き込めメソッド;指定された文字列を含む行を「,」区切りで新しいファイルに書き出す。

読み込みファイルイメージ(※数字に特に意味はありません)
名前:山田太郎,,,,,,,,
日付け,曜日,,食事,,,,,
9月1日,火,納豆,2.5,親子丼,3.5,焼き肉,0.5
9月2日,水,納豆,3.5,親子丼,4.5,焼き肉,1.5
9月3日,木,納豆,4.5,親子丼,5.5,焼き肉,2.5
9月4日,金,納豆,5.5,親子丼,6.5,焼き肉,3.5
,,,,,,,,


出力イメージ
名前:山田太郎
9月2日

納豆
3.5
親子丼
4.5
焼き肉
1.5
・・・・

該当のソースコード

Java
ソースコード

import java.io.*; import java.util.*; public class Test{ public static void main(String [] args){ String line; String[] data; BufferdReader reader = null; BufferdWriter writer = null; try{ reader = BufferReader reader(new FileReader("Week.csv")); writer = BufferWriter writer(new FileWriter("NewWeek.csv")); while((line = reader.readLine()) ! = null){ if(line.contains("氏名")){ create(line); }else if(line.contains("月")){ create(line); }else if(line.contains("水")){ create(line); }else if(line.contains("金")){ create(line); } } //メソッド static void create(line){ data = line.split(","); for(int i = 0; i < data.length; i++){ writer.write(data[i]); writer.newLine(); } } }catch(IOExeption e){ }finally{ try(reader ! = null){ reader.close(); }catch(IOException e){} try(writer ! = null){ writer.close(); }catch(IOException e){} } } }

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

メソッドがうまく呼び出せていません。

試したこと

メソッドを書く場所を変えたりしましたが変化ありませんでした。
そもそものメソッドに問題があるのかもよく理解できていません。
ヒントをいただけると幸いです。

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

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

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

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

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

shinami

2020/10/18 11:58

``` 見にくいので、この中にソースコードを入れる事をお勧めします。 ``` ```は、バッククォートで、Shift + @キーを押し入力します。これを3つ付けてください。 詳しくはマークダウンで検索してみて下さい。
koumm

2020/10/18 13:51

丁寧な手順を示してくださり、ありがとうございます。
guest

回答1

0

ベストアンサー

メソッドがうまく呼び出せていません。

それ、以前の問題ですね。コンパイルすらできない。ナニを見てこのソースを書いたのでしょうか...。

reader = BufferReader reader(new FileReader("Week.csv"));の行なんてなかなか凄まじいものを感じます。

以下、コンパイルだけはとおります。

java

1import java.io.BufferedReader; 2import java.io.BufferedWriter; 3import java.io.FileReader; 4import java.io.FileWriter; 5 6public class Test { 7 static String[] data; 8 static BufferedWriter writer = null; 9 10 public static void main(String[] args) throws Exception { 11 String line; 12 BufferedReader reader = null; 13 14 reader = new BufferedReader(new FileReader("Week.csv")); 15 writer = new BufferedWriter(new FileWriter("NewWeek.csv")); 16 17 while (reader.ready()) { 18 line = reader.readLine(); 19 if (line.contains("氏名")) { 20 create(line); 21 } else if (line.contains("月")) { 22 create(line); 23 } else if (line.contains("水")) { 24 create(line); 25 } else if (line.contains("金")) { 26 create(line); 27 } 28 } 29 } 30 31 //メソッド 32 static void create(String line) throws Exception { 33 data = line.split(","); 34 for (int i = 0; i < data.length; i++) { 35 writer.write(data[i]); 36 writer.newLine(); 37 } 38 } 39}

投稿2020/10/17 04:47

shiketa

総合スコア4061

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

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

koumm

2020/10/18 10:12

迅速な回答をありがとうございます。 某テキストと、検索しながら記述しました。 コンパイルが通らなかった原因は、 staticのメソッドでstaticでない変数を呼びだしていたことが原因ということですね。 ありがとうございました。 メソッドについてはもう少し考えてみます。
shiketa

2020/10/18 11:22

> staticのメソッドでstaticでない変数を呼びだしていたことが原因ということですね。 い、い、え。 ` BufferReader reader(new FileReader("Week.csv"))`などという書き方は構文として存在しません。また、 `criate`は`create`のタイプミスだとしても、`create`メソッドの定義位置が無茶苦茶です。某テキストに、このとおりに記載されているのであれば、あまり信用できるテキストだとは思えません。テキストを変更されることをおすすめします。
koumm

2020/10/18 13:52

メソッドの定義位置は自身で考えました。 ご指摘ありがとうございます。 基礎部分から学び直そうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問