useDelimeter(",")无效

时间:2016-09-07 01:15:35

标签: java java.util.scanner delimiter

我有一个文本文件,其中包含以下数据:

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(",|,"),但仍然给了我相同的输出。我怎样才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

来自the Scanner's documentation

  

此方法返回当前行的 rest ,不包括末尾的任何行分隔符。该位置设置为下一行的开头。

(强调我的意思)这意味着返回整行的其余部分,包括分隔符。将id设置为reader.next()将无法正常工作,因为它会将所有内容吸收到下一个分隔符之前。更好的解决方案是让它接受换行符作为分隔符,如下所示:

reader.useDelimiter("[,\n]");