0
class Materials implements Runnable {
    String path;

    public Materials(String path) {
        this.path = path;
    }

    public int checkSize() throws FileNotFoundException {
        Scanner sc = new Scanner(new File(path));
        int size = 0;
            while(sc.hasNextLine()) size++;
        sc.close();
        return size;
    }

    public void run() {
    try {
        Scanner sc = new Scanner (new File(path));
        int[][] materialsTab = new int[1][checkSize()];
        int x=0, count=0;
        while(sc.hasNext()){
            count++;

            materialsTab[x][0] = sc.nextInt();
            materialsTab[x][1] = sc.nextInt();
            x++;
            System.out.println("Im working!");

            if(count%200 == 0) System.out.println("Creat " + count + " objects");
    }
    sc.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }


    }
}

私の問題は、スレッドごとに .txt ファイルを配列に書き直さなければならず、次のスレッドが来ることですが、タスクの最初の部分で行き詰まりました。

テキスト ファイルは約 10 000 行で構成されているため、public int checkSize() は配列のサイズをカウントする役割を果たします。全体は次のようになります。

【商品ID】 【重量】

そこで、行数を数えて、そのような表を作成することにしました。ID を保持する 1 つの場所と、重みの隣です。後でいくつかのことを数えなければならないからです。

さらに、200 レコードごとにメッセージに表示する必要があります。問題は、この部分を開始した後... 何も起こらないことです。

4

2 に答える 2

0

それ以外の

int[][] materialsTab ...

大まかに次のようなものを使用することを検討してください。

List<Point> materialsTab = new ArrayList<Point>();

Point mat = new Point();
mat.x = sc.nextInt();
if (!sc.hasNext())
    break;
mat.y = sc.nextInt();
materialsTab.add(mat);
于 2013-04-15T17:21:25.743 に答える
0

問題を正しく理解している場合は、最後にRunnabletoCallable<int[]>public void run()toを変更しpublic int[] call()て追加return materialsTab;してみてください。

于 2013-04-15T16:48:36.553 に答える