解答・コメントを送る方法

コメントを送るには2つの方法があります。
  • 匿名でコメントを書く
    ログインせずにコメントを書くことができます。 名前は「匿名」となります。
  • アカウントを作成してコメントを書く
    アカウントを作成すると、記名での投稿ができます。 また、プロフィールページが作成され、 簡単なプロフィールや 統計情報が表示されるようになります。
どちらの場合も投稿後の修正・削除はできないので、 投稿前によくご確認下さい。

投稿ボタンを押す前に以下の文章を確認してください

  • 当サイトへの投稿は クリエイティブ・コモンズ・ライセンス BY(表示)および、その解釈に同意するものとみなされます。各ページには下のようにライセンス表示が行われます。
    Creative Commons License このサイトの内容は、 クリエイティブ・コモンズ・ライセンスの下でライセンスされています。 [詳細]
  • あなたの投稿したコード・コメント・トピックが再利用・添削されることを望まない場合は、投稿をお控えください。
  • 自分が書いていない、ウェブサイトや書籍などからの無断コピーは著作権の侵害です。著作権者の了解を得るか、自分で0から書いてください。
  • 著作権の侵害、名誉毀損、など投稿内容に問題がある場合、削除することがあります。
  • これらのことにあなたはあらかじめ同意したものとみなされます。

Post comment

Post a comment to the following challenge: 固定長データ (Nested Flatten)

As a reply to the following comment: horiuchi: とりあえず、こんな感じで。 ちゃんとや...(#6085) [show]

[hide]

とりあえず、こんな感じで。 ちゃんとやるなら、ReadとWriteの処理はRecordとセットのクラスを用意するかも。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Sample170 {
    private static final String encoding = "MS932";
    private static final String FILE_NAME = "record.dat";
    
    public static void main(String[] args) {
        try {
            createTestData(FILE_NAME);

            List<Record> records = readData(FILE_NAME);
            System.out.println(records.size());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static List<Record> readData(String fileName) throws IOException {
        Reader reader = null;
        try {
            reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), encoding));
            List<Record> result = new ArrayList<Record>();
            char[] smallBuf = new char[12];
            char[] menuBuf = new char[500];
            while (true) {
                Record record = new Record();
                if (reader.read(smallBuf) < 0) break;
                record.familyName = String.valueOf(smallBuf).trim();
                if (reader.read(smallBuf) < 0) break;
                record.firstName = String.valueOf(smallBuf).trim();
                if (reader.read(smallBuf, 0 , 1) < 0) break;
                record.sex = Record.Sex.valueOf(String.valueOf(smallBuf[0]));
                if (reader.read(smallBuf, 0 , 3) < 0) break;
                record.age = Integer.parseInt(String.valueOf(smallBuf, 0, 3).trim());
                
                if (reader.read(smallBuf, 0 , 4) < 0) break;
                int year = Integer.parseInt(String.valueOf(smallBuf, 0, 4).trim());
                if (reader.read(smallBuf, 0 , 2) < 0) break;
                int month = Integer.parseInt(String.valueOf(smallBuf, 0, 2).trim());
                for (int index = 1; index <= 31; index++) {
                    MenuData menu = new MenuData();
                    menu.year = year;
                    menu.month = month;
                    
                    if (reader.read(smallBuf, 0 , 2) < 0) break;
                    menu.day = Integer.parseInt(String.valueOf(smallBuf, 0, 2).trim());
                    if (reader.read(menuBuf) < 0) break;
                    menu.breakfast = String.valueOf(menuBuf).trim();
                    if (reader.read(menuBuf) < 0) break;
                    menu.lunch = String.valueOf(menuBuf).trim();
                    if (reader.read(menuBuf) < 0) break;
                    menu.dinner = String.valueOf(menuBuf).trim();
                }
                result.add(record);
            }
            return result;
        } finally {
            if (reader != null) {
                reader.close();
            }
        }
    }

    private static void createTestData(String fileName) throws IOException {
        Writer writer = null;
        try {
            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), encoding));
            Random random = new Random();
            Record.Sex[] sexValues = Record.Sex.values();
            for (int index = 0; index < 500; index++) {
                writer.write(String.format("%-12s", "FamilyName"));
                writer.write(String.format("%-12s", "FirstName"));
                writer.write(sexValues[random.nextInt(sexValues.length)].toString());
                writer.write(String.format("%3d", random.nextInt(120)));
                writer.write("2008");
                writer.write("03");
                for (int day = 1; day <= 31; day++) {
                    writer.write(String.format("%02d", day));
                    writer.write(String.format("%-500s", "breakfast menu."));
                    writer.write(String.format("%-500s", "lunch menu."));
                    writer.write(String.format("%-500s", "dinner menu."));
                }
            }

        } finally {
            if (writer != null) {
                writer.close();
            }
        }
    }
}

class Record {
    public enum Sex {
        F, M, U,
    }
    public String familyName;
    public String firstName;
    public Sex sex;
    public int age;
    public final List<MenuData> menuList = new ArrayList<MenuData>();
}

class MenuData {
    public int year;
    public int month;
    public int day;
    public String breakfast;
    public String lunch;
    public String dinner;
}


コメント本文
形式 [?]
コード
言語

タグ
半角スペースで区切って複数のタグを入力できます。
参考ページタイトル

参考ページURL
利用規約を読んで同意する必要があります。
by guest

Index

Feed

Other

Link

Pathtraq

loading...