0

おそらくスキャナーを使用して外部テキストファイルを読み取り、各行の2つの値を配列に格納するにはどうすればよいですか。

各行の最初の値であるノードIDと、各行の最後の値である親番号を保存したいと思います。

テキストファイルには、以下に表示される内容が含まれています

1       2,7,|0|BLACK|NULL
10      3,4,12,|3|BLACK|3
11      4,12,|4|BLACK|4
12      8,10,11,|3|BLACK|8
2       1,3,6,8,|1|BLACK|1
3       2,4,5,6,8,10,|2|BLACK|2
4       3,5,9,10,11,|3|BLACK|3
5       3,4,8,|3|BLACK|3
6       2,3,|2|BLACK|2
7       1,8,|1|BLACK|1
8       2,3,5,7,9,12,|2|BLACK|2
9       4,8,|3|BLACK|8
4

2 に答える 2

2

正規表現アプローチ(読者の演習として配列ビットを残しました):

BufferedReader br = new BufferedReader(new FileReader("hadoop_data.txt"));

String currentLine;
while ((currentLine = br.readLine()) != null) {

    Matcher matcher = Pattern.compile("(\\d+).*\\|(\\w+)").matcher(currentLine);
    if (matcher.matches()) {
        System.out.println(matcher.group(1) + "\t" + matcher.group(2));
            // add to array
    }
}
于 2012-07-26T01:08:08.887 に答える
0

Shonna、HashMap、Scanner、およびいくつかの単純な文字列解析を使用して、必要なことを実現できます。これが私のクラス全体です:

import java.io.*;
import java.util.*;

public class nodes {

    private static HashMap<Integer, String> map = new HashMap<Integer, String>();

    public static void main(String[] args) {
        File file = new File("nodes.txt");
        Scanner scnr = null;
        try {
            scnr = new Scanner(file);
        } catch (FileNotFoundException e) {

        }
        while(scnr.hasNext()) {
            String line = scnr.nextLine();
            String[] getId = line.split("\\s+");
            int id = Integer.parseInt(getId[0]);
            int count = 0;
            int copy = 0;
            for(int i = 0; i < line.length(); i++) {
                if(line.charAt(i) == '|')
                    count++;
                if(count == 3) {
                    copy = i;
                    break;
                }
            }
            String parent = line.substring(copy + 1);
            map.put(id, parent);
            System.out.println(map);
        }
    }

}

ファイルの各行を読み取り、最初にノードIDを抽出します。次に、行の各文字を3つカウントするまで循環し|ます。その時点で、行の残りの部分がノードの親になることがわかります。これが行われた後、HashMapでIDと親をペアにします。

于 2012-07-26T01:31:47.870 に答える