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] [重量]
所以我决定计算行数并创建一个这样的表,一个我保留ID的地方,然后是重量,因为稍后我将不得不计算一些东西。
此外,每200条记录必须出现在邮件中。问题是,在开始这部分之后......没有任何反应。
答案 0 :(得分:0)
如果我正确理解您的问题,请尝试将Runnable
更改为Callable<int[]>
,将public void run()
更改为public int[] call()
并在结尾处添加return materialsTab;
。
答案 1 :(得分: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);