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 文件重写为一个数组,然后是下一个线程,但我被困在任务的第一部分。

public int checkSize() 负责计算数组的大小,因为文本文件由大约 10 000 行组成。整体看起来就像这样:

[产品编号] [重量]

所以我决定计算行数并创建一个这样的表格,一个我保存 ID 的地方,旁边是重量,因为稍后我将不得不计算一些东西。

此外,每 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()topublic int[] call()return materialsTab;在最后添加。

于 2013-04-15T16:48:36.553 回答