我有类似的问题,几乎没有变化,这是:
我的文本文件包含大量不同大小的行“即并非所有行都具有相同的长度” 每行只包含整数。
作为例子A.txt =
4 6 4 1 2 2 5 7 7
0 9 5 5 3 2 43 3 32 9 0 1 3 1
3 4 5 6 7 4
34 5 8 9 0 7 6 2 4 5 6 6 7 5 4 3 2 21 4 9 8 4 2 1 5
我想把这些整数放到一个数组中,这样每个整数都是数组中的一个元素,并保存“重叠”的行,即我需要保持每一行不变。
有人可以帮我吗?
答案 0 :(得分:5)
a = dlmread('a.txt')
a =
第1至21栏
4 6 4 1 2 2 5 7 7 0 0 0 0 0 0 0 0 0 0 0 0
0 9 5 5 3 2 43 3 32 9 0 1 3 1 0 0 0 0 0 0 0
3 4 5 6 7 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
34 5 8 9 0 7 6 2 4 5 6 6 7 5 4 3 2 21 4 9 8
第22至25栏
0 0 0 0
0 0 0 0
0 0 0 0
4 2 1 5
答案 1 :(得分:0)
我会做以下事情:
1)为每一行创建一个新数组
2)从文件
一次读取一行3)用“space”char
分割每一行4)迭代从split操作得到的String [],将每个值传递给Integer.parseInt(value);
5)将值存储在数组中;
6)当读取下一行时,创建新数组以存储新行值。
答案 2 :(得分:0)
您可以使用Scanner
一次一行地读取数据,并将数字存储在List
中,例如ArrayList
:
import java.util.*;
import java.io.*;
public class Numbers
{
public static void main(String[] args) throws FileNotFoundException
{
Scanner data = new Scanner(new File("A.txt"));
List<List<Integer>> ints = new ArrayList<List<Integer>>();
while (data.hasNextLine()) {
List<Integer> lineInts = new ArrayList<Integer>();
Scanner lineData = new Scanner(data.nextLine());
while (lineData.hasNextInt()) {
lineInts.add(lineData.nextInt());
}
ints.add(lineInts);
}
System.out.println(ints);
}
}
此代码打开文件以供阅读,并创建一个二维ArrayList
。外部列表包含文件中每行的列表。内部列表包含相应行的整数。请注意,空行会导致空列表。此外,与上面显示的代码不同,您必须正确处理任何IO异常。
如果你真的想要二维数组而不是ArrayList
的整数,那么你要么必须调用toArray
,要么改变上面的代码。这留给读者练习。