Java 通过扫描仪将.txt重写为数组
我的问题是,我必须逐个线程将.txt文件重写到一个数组中,然后是下一个线程,但我在任务的第一部分遇到了困难 public int checkSize()负责计算数组的大小,因为文本文件由大约10000行组成。整个过程将完全如下所示: [产品编号][重量] 所以我决定数一数行数,创建这样一个表格,一个我保存ID的地方,在重量旁边,因为以后我将不得不数一数Java 通过扫描仪将.txt重写为数组,java,arrays,Java,Arrays,我的问题是,我必须逐个线程将.txt文件重写到一个数组中,然后是下一个线程,但我在任务的第一部分遇到了困难 public int checkSize()负责计算数组的大小,因为文本文件由大约10000行组成。整个过程将完全如下所示: [产品编号][重量] 所以我决定数一数行数,创建这样一个表格,一个我保存ID的地方,在重量旁边,因为以后我将不得不数一数 此外,每200条记录必须出现在消息中。问题是在开始这部分之后。。。什么也没有发生。如果我正确理解了您的问题,请尝试将可运行更改为可调用和公共无效
此外,每200条记录必须出现在消息中。问题是在开始这部分之后。。。什么也没有发生。如果我正确理解了您的问题,请尝试将
可运行更改为可调用和公共无效运行()
更改为公共int[]call()
并添加返回材料选项卡代码>在末尾。而不是
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();
}
}
}
考虑使用大致如下的方法:
int[][] materialsTab ...
List materialsTab=new ArrayList();
点材料=新点();
mat.x=sc.nextInt();
如果(!sc.hasNext())
打破
材料y=sc.nextInt();
材料选项卡。添加(垫);
不幸的是,它没有帮助:(如果有帮助,我也可以添加主类。
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);