ここから本文です

java初心者です。javaで外部テキストファイルを読み込んで二つの配列に格納する方...

mis********さん

2011/10/1712:27:27

java初心者です。javaで外部テキストファイルを読み込んで二つの配列に格納する方法。

javaで外部テキストファイルを読み込み、二つの配列に格納する方法を教えていただきたいです。

例えば以下のようなテキストファイル

(sample.txt)
鈴木,会社員
佐藤,医者
伊藤,学生

だとすると、鈴木、佐藤、伊藤の名前はname[]に
会社員、医者、学生の職業はsyokugyo[] という配列に格納する方法を教えていただきたいです。

色々と調べてみましたが、方法が分からず投稿致しました。

宜しくお願い致します。

閲覧数:
6,723
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

ii3********さん

2011/10/1714:55:11

コード例です。


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Sample {
private static final String FILE_PATH = "/sample.txt";

public static void main(String[] args) {
String[] name = null;
String[] syokugyo = null;
List<String> nameList = new ArrayList<String>();
List<String> syokugyoList = new ArrayList<String>();

// ファイルの読み込み
read(nameList, syokugyoList);
// 名前と職業のリストを配列に変換
name = (String[])nameList.toArray(new String[0]);
syokugyo = (String[])syokugyoList.toArray(new String[0]);

System.out.println("名前");
for (String theName : name) {
System.out.println(theName);
}
System.out.println();
System.out.println("職業");
for (String job : syokugyo) {
System.out.println(job);
}
}

private static void read(List<String> nameList, List<String> syokugyoList) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(FILE_PATH));
String line = null;
// ファイルの読み込み
while ((line = br.readLine()) != null) {
String[] array = line.split(",");
if (array.length == 2) {
nameList.add(array[0]);
syokugyoList.add(array[1]);
}
}

// 以下エラー処理
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

質問した人からのコメント

2011/10/18 16:00:49

お二人ともとても早い回答、そしてコードまで載せていただいてありがとうございます。とても助かりました!

どちらのコードでも期待していた結果が出たのですが、ii3pvy63さんのコードをほとんど使わせていただきましたので、ii3pvy63さんをベストアンサーに選びました。出来ることならお二人とも選びたい気持ちですが。。。

この度は本当にどうもありがとうございました!私も、もっと頑張って勉強します!

ベストアンサー以外の回答

1〜1件/1件中

xys********さん

2011/10/1713:18:22

import java.io.*;

public class test1017{

static String[] name;
static String[] syokugyo;
static int num = 0;


public static void main(String[] args) {
try {
FileReader in = new FileReader("sample.txt");
BufferedReader br = new BufferedReader(in);
String line;

while ((line = br.readLine()) != null) {
num++;
}

name = new String[num];
syokugyo = new String[num];


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

read();
}

static void read(){
try{
FileReader in = new FileReader("sample.txt");
BufferedReader br = new BufferedReader(in);
String line;

int count = 0;

while ((line = br.readLine()) != null) {
String[] tmp = line.split(",");
name[count] = tmp[0];
syokugyo[count++] = tmp[1];
}

br.close();
in.close();

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

for(int i=0; i<name.length; i++){
System.out.println("名前:"+ name[i] +"、職業:"+ syokugyo[i]);
}
}
}

----------------------------------------------------------------------

こんな感じでいけるはずですが、あまりきれいなプログラムではないです・・・
配列の要素数を決めるために一度テキストファイルの行数を求めて、
その次にread()メソッドで配列に名前と職業を入れています。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる