我有一个文本文件,其中包含以下数据:
Jones,Mary,903452
4342,2.5,A
3311,4,B+
我使用Scanner读取文件。这是我的代码:
while(reader.hasNextLine())
{
reader.useDelimiter(",");
String lastN = reader.next();
String firstN = reader.next();
String id = reader.nextLine();
String course1 = reader.next();
double credits = reader.nextDouble();
String grade = reader.nextLine();
}
但是当我在控制台上打印该行时,该行最后一部分的,
没有被分隔,并且打印如下:
Jones, Mary, ,903452
4342, 2.5, ,A
6.5, ,3.569
我班上的toString方法:
public String toString() {
return lastName + ", " + firstName + ", " + idNo + "\n"
+ courseOne + ", " + credits + ", " + grade;
我正在寻找解决方案。我尝试了reader.useDelimiter("[,]")
和reader.useDelimiter(",|,")
,但仍然给了我相同的输出。我怎样才能解决这个问题?
答案 0 :(得分:0)
来自the Scanner
's documentation:
此方法返回当前行的 rest ,不包括末尾的任何行分隔符。该位置设置为下一行的开头。
(强调我的意思)这意味着返回整行的其余部分,包括分隔符。将id
设置为reader.next()
将无法正常工作,因为它会将所有内容吸收到下一个分隔符之前。更好的解决方案是让它接受换行符作为分隔符,如下所示:
reader.useDelimiter("[,\n]");