我在.txt文档中以一种形式给出了一组数据:
0 1
0 3
0 4
0 5
0 6
0 7
......等等
我的问题是,我如何解析这个,以便将整数的左列放在一个数组中,同样也用于右列的数字。每对数字都有自己的一行。
在我给出的这组数据中,int[] leftColumn
将全为零,int[] rightColumn
将包含1,3,4,5,6,7。
答案 0 :(得分:2)
java.util.Scanner已经完成了大部分繁重的工作,只需要使用它:
List<Integer> leftColumnTmp = new LinkedList<>();
List<Integer> rightColumnTmp = new LinkedList<>();
try (Scanner sc = new Scanner("myfile.txt")) {
while (sc.hasNextLine()) {
leftColumnTmp.add(sc.nextInt());
rightColumnTmp.add(sc.nextInt());
}
}
int[] leftColumn = leftColumnTmp.stream().mapToInt(Integer::intValue).toArray();
int[] rightColumn = rightColumnTmp.stream().mapToInt(Integer::intValue).toArray();
答案 1 :(得分:0)
逐行读取文件并按空格分割,然后将它们添加到数组中。
BufferedReader br = new BufferedReader(new FileReader(<PATH/TO/FILE>));
try {
String line = br.readLine();
List<Integer> leftColumn = new ArrayList<>();
List<Integer> rightColumn = new ArrayList<>();
while (line != null) {
String strarray[] = line.split(" ");
for (int count = 0; count < strarray.length ; count++) {
leftColumn.add(Integer.parseInt(strarray[count]));
rightColumn.add(Integer.parseInt(strarray[++count]));
}
line = br.readLine();
}
System.out.println("Left Column :"+leftColumn);
System.out.println("Right Column :"+rightColumn);
}finally {
br.close();
}
答案 2 :(得分:0)
使用java8时,有一种简单的方法可以读取文件:
List<Integer> left = new ArrayList();
List<Integer> right = new ArrayList();
Files.lines(Paths.get("c:\\lines.txt"))
.map(l -> l.split("\\s"))
.forEachOrdered(l -> {
left.add(Integer.parseInt(l[0]));
right.add(Integer.parseInt(l[1]));
});
如果你真的需要int[]
,你可以稍后转换它:
int[] leftArray = left.stream().mapToInt(Integer::intValue).toArray();
int[] rightArray = right.stream().mapToInt(Integer::intValue).toArray();