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

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

ただいまの
回答率

90.34%

  • Java

    14471questions

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

カンマ区切りのCSVファイル出力について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 178

takoyaki310

score 3

前提・実現したいこと

クラス名やアクセス修飾子や型名、メンバ名、コメントに分けるカンマ区切りのCSVファイルにしたい

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

どうしたらよいかわからない

該当のソースコード

//学生証(StudentCard)クラス
class StudentCard {
    private int uid;        //UID
    private String id;        //学籍番号
    private String name;        //氏名
    private boolean entryflag;        //入退室可能か?

    //コンストラクタ
    StudentCard(int uid,String id,String name,boolean entryflag){
        this.uid = uid;
        this.id = id;
        this.name = name;
        this.entryflag = entryflag;
    }
    //コンストラクタ
    StudentCard(String id,String name){
        this.id = id;
        this.name = name;
    }
    //コンソール出力
    public void printInfo() {
        System.out.println("UID            :"+ this.uid);
        System.out.println("学籍番号       :"+ this.id);
        System.out.println("氏名           :"+ this.name);
        System.out.println("入退室可能か? :"+ this.entryflag);
    }
    //UID設定処理
    public void setuid(int uid) {
        this.uid = uid;
    }
    //入退室可能フラグ設定処理
    public void setentryflag(boolean entryflag) {
        this.entryflag = entryflag;
    }
    //UID取得処理
    public int getuid() {
        return this.uid;
    }
    //学籍番号取得処理
    public String getid() {
        return this.id;
    }
    //氏名取得処理
    public String getname() {
        return this.name;

    }
    //入退室可能フラグ取得処理
    public boolean getentryflag() {
        return this.entryflag;
    }
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
class ClassDefinition {
    //読み込むファイル名
    private static final String FILENAME = "src/input/StudentCard.java";
        public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
            try {
                File file = new File(FILENAME);

                //文字コードUTF-8を指定してファイルを読み込む
                FileInputStream input = new FileInputStream(file);
                InputStreamReader stream = new InputStreamReader(input,"UTF-8");

                BufferedReader br = new BufferedReader(stream);

                String s;
                //1行読み込みコンソール出力
                while((s = br.readLine()) != null) {
                    System.out.println(s);
                }

            }catch(IOException e) {
                System.out.println(e);
            }
    }

}

試したこと

読み込みはできたがカンマ区切りにすることができない

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

必要な機能
1.Javaソースファイル読み込み機能
StudentCard.javaの読み込み
2.Javaソースファイル解析機能
読み取ったデータを解析して決まった形式にする
3.カンマ区切りのCSVファイル出力機能
クラス定義一覧表としてカンマ区切りのCSVファイルに出力する

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • dice142

    2018/12/05 12:24

    javaファイルを読み込んでいるようですが、どういう出力を望んでいるのですか?

    キャンセル

  • mts10806

    2018/12/05 13:06

    JavaDocをCSV出力した方が早そうな内容ですね(ひとまずJavaDocについて知ってください)

    キャンセル

  • takoyaki310

    2018/12/05 13:35

    分かりました

    キャンセル

回答 1

checkベストアンサー

+1

StudentCardクラスをクラス名やアクセス修飾子や型名、メンバ名、コメントに分けるカンマ区切りのCSVファイルにしたい

ここまで細かく分けるものが決まっていると読み込み段階でかなり複雑化しそうですね。
何をもってクラス名とするのか、アクセス修飾子はどう判定するのかなど、ここでは説明しきれないのでしません。

まずはそれぞれ分けたいものの判定を考えてみましょう。

で、出力の方ですが、書き込みの用意はしているのに必要なものを何も書き込みをしていません。
BufferedWriterで書き込みしてもできなくはないですが、PrintWriterを使った方が
標準出力と同じような感覚で出力できるのでやりやすいかと思います。

まずはPrintWriterでの書き込み方を調べることをオススメします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/06 11:52

    回答ありがとうございます。

    キャンセル

同じタグがついた質問を見る

  • Java

    14471questions

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