我希望打开一个文本文件,其格式如下,并将其放入2d arraylist,其中每个对象(而不是每一行)都有自己的索引。
5
1 a w e r s 5 2 d 6
f s d e a 3 6 7 1 32
2 f s 6 d
4 s h y 99 3 s d
7 s x d q s
我尝试了很多解决方案,大多数涉及一段时间(scanner.hasNext())或while(scanner.hasNextLine())循环,将一行中的所有对象分配给他们自己在1d arraylist中的indice,并且然后将该arraylist添加到2d arraylist。但无论我做什么,我都得不到我想要的结果。
我本质上试图做的是诸如scanner .hasNext()方法,它只抓取一行中的下一个对象,并且不会跳转到下一行。我尝试的一个例子如下:
while (scanner.hasNextLine()) {
ArrayList<Object> array = new ArrayList<Object>();
while(scanner.hasNext()0 {
String line = scanner.next();
array.add(line);
}
System.out.println(array);
2dArray.add(array);
}
scanner.nextLine();
}
答案 0 :(得分:0)
每次通过外部循环都需要分配一个新数组,而不是清除现有数组。此外,为每一行设置新的扫描仪可能最简单:
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
Scanner lineScanner = new Scanner(line);
ArrayList<String> array = new ArrayList<String>();
while (lineScanner.hasNext()) {
array.add(lineScanner.next());
}
my2Darray.add(array);
}
答案 1 :(得分:0)
使用BufferedReader一次读取一行文件。
BufferedReader br = new BufferedReader(...);
while ((strLine = br.readLine()) != null) {
String[] strArray = strLine.split("\\s");
// do stuff with array
}
然后在空格上拆分String,它会给你一个String [],并且很容易转换成List。这样的事情:How do I split a string with any whitespace chars as delimiters?