没有使用扫描仪读取特定信息的麻烦

时间:2014-04-21 09:26:23

标签: java

在使用扫描仪阅读文本文件时,我只希望获得一定数量的信息。所有其他我不想要的。

示例:

1)
比利时布鲁日;比利时安特卫普; 107公里
输出 - > String city1 =布鲁日,String city2 =安特卫普,双倍距离= 107

2)
比利时布鲁日;比利时布鲁塞尔; 105公里
输出 - > String city1 =布鲁日,String city2 =布鲁塞尔,双倍距离= 105

3)
比利时伊克塞尔;比利时沙勒罗瓦; 71.6公里
输出 - > String city1 = Ixelles,String city2 = Charleroi,双倍距离= 71.6

我发现了什么:

while (scanner.hasNextLine()) {
    Scanner lineScanner = new Scanner(scanner.nextLine());
    String city1 = lineScanner.next();
    lineScanner.skip(", Belgium;");
    String city2= lijnScanner.next();
    lineScanner.skip(", Belgium;");
    double km = Integer.parseInt(lineScanner.next());
    lineScanner.skip(" km");
    this.voegToe(new TweeSteden(city1, city2),km);
    lineScanner.close();
}

Voegtoe:将信息放入Map中的方法。 TweeSteden:一个包含两个城市作为字符串的对象。

救援坦克。

1 个答案:

答案 0 :(得分:1)

lineScanner.skip(", Belgium;");

java文档对skip方法的说法,

skip(java.util.regex.Pattern)方法独立于分隔符模式运行。这些方法将尝试匹配指定的模式而不考虑输入中的分隔符,因此可以在分隔符不相关的特殊情况下使用。这些方法可能会阻止等待更多输入。

之前您尝试通过public Scanner skip(Pattern pattern)匹配该模式,这就是NoSuchElementExeption被抛出的原因。

所以public Scanner skip(String pattern)会查找要跳过的字符串。

要了解有关这些方法的更多信息,请查看docs

希望这会有所帮助!!