0

所以,我Scanner用来解析一个以空格和换行符分隔的文本文件。每行都有一个加载到数组中的索引号和一个字符串,该字符串是对应于数组成员的标签,如下所示:

0 Sydney
1 Alice Springs
2 Canberra
3 Bathurst
4 Orange

我正在使用以下代码来读取文件:

public void readIndex (String indexFile)
{
    int i = 0;
    String label = null; 

    InputStream input = getClass().getResourceAsStream(indexFile);

    Scanner parser = new Scanner(input);

    parser.useDelimiter(" ");

    while (parser.hasNextLine())
    {
        i = parser.nextInt();
        label = parser.nextLine();

        this.setLabel(i, label);
    }
}

最后,这段代码打印结果:

System.out.println("Cities loaded:");    

for (int i = 0; i < cities.vertexCount(); i++)
    {
        System.out.println(cities.getLabel(i));
    }

字符串显示得很好,但每个标签似乎都有一个前导空格。这是输出:

Cities loaded:
 Sydney
 Alice Springs
 Canberra
 Bathurst
 Orange

例如,第一个字符串被存储为“Sydney”。

这是我的分隔符设置的问题,还是我错过了其他非常明显的东西?提前致谢!

4

1 回答 1

2

Scanner#nextInt仅消耗整数输入,因此其余的String将包含前导空格。你需要修剪这个字符

label = parser.nextLine().trim();
于 2013-05-31T00:38:24.827 回答