在使用扫描仪阅读文本文件时,我只希望获得一定数量的信息。所有其他我不想要的。
示例:
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:一个包含两个城市作为字符串的对象。
救援坦克。
答案 0 :(得分:1)
lineScanner.skip(", Belgium;");
java文档对skip
方法的说法,
skip(java.util.regex.Pattern)方法独立于分隔符模式运行。这些方法将尝试匹配指定的模式而不考虑输入中的分隔符,因此可以在分隔符不相关的特殊情况下使用。这些方法可能会阻止等待更多输入。
之前您尝试通过public Scanner skip(Pattern pattern)
匹配该模式,这就是NoSuchElementExeption
被抛出的原因。
所以public Scanner skip(String pattern)
会查找要跳过的字符串。
要了解有关这些方法的更多信息,请查看docs
希望这会有所帮助!!