【发布时间】:2018-05-18 02:56:50
【问题描述】:
我目前对如何在删除所有空格的同时从文本文件中读取感到困惑。我尝试使用分隔符和字符串拆分,但没有成功。问题是:我的任务要求我从一个文本文件中读取几行文本并将其存储在一个数组中。
但是,其中一条线有一个可见的“间隙”或几个空格(由此处的语音标记表示),我认为这会给我带来问题。
这是文本文件的示例:
jy1 10 10 10 10 10
mp1 6 5 6 " " 7 5
ls1 9 7 12 14 15
mp2 10 12 15 15 14
lb1 12 12 12 12 12
这是我的代码:
try {
FileReader reader= new FileReader(attendancesFile.txt);
String line="";
Scanner in=new Scanner(reader);
// reading from file line by line
while (in.hasNextLine()) {
line=in.nextLine();
// splitting line read in separate words
String tokens[]=line.split(" ");
// creates an array of attendances
// using 5 separate attendances represented as integer values from file
String id= tokens [0];
int attend1= Integer.parseInt(tokens [1]);
int attend2= Integer.parseInt(tokens [2]);
int attend3= Integer.parseInt(tokens [3]);
int attend4= Integer.parseInt(tokens [4]);
int attend5= Integer.parseInt(tokens [5]);
int [] attend= {attend1, attend2, attend3, attend4, attend5};
// uses FP method to find Fitness Class with given ID
// sets the attendance for Fitness Class with given ID
fp.classByID(id).setAttendance(attend);
}
reader.close();
in.close();
}
catch (IOException e) {
System.err.println("Reading from file error.");
}
理想情况下,我应该有 5 个数组,每个数组存储文件每一行的 5 个整数。然后,我会将这些数组传递给另一个类,其中一个方法将这个 int 数组添加到对象数组中。
但是,它给了我一个错误: 线程“main”java.lang.NumberFormatException 中的异常:对于输入字符串:“” 我认为这是由于读取并添加到的空白数组。我已经测试打印出每个数组,看起来好像第四个数组只有 4 个元素和一个空格。
【问题讨论】:
-
请注意,现在读取和写入文件是通过使用称为 NIO 的 Java 新 I/O API 完成的。它围绕
Files、Paths和Path类展开。 -
“但是其中一行有一个可见的‘间隙’或几个空格”应该如何解释这个间隙?我假设您指的是
mp1 6 5 6 " " 7 5,但是那个间隙包含",这些引号也是真实文件/输入的一部分吗?我们应该假设这个" "代表某种元素“空格”元素,这些元素被空格包围,应该包含在结果数组中,或者这些空格应该被视为一个分隔符? -
可能重复(取决于 OP 说明)Splitting a string with multiple spaces
标签: java arrays whitespace filereader readline