【发布时间】:2021-11-04 08:53:08
【问题描述】:
我有一个坐标以 x,y 形式存储为字符串,我需要打印它们,所以我将扫描仪的分隔符更改为“,”。当我这样做时,我得到以下结果:
字符串被正确插入,并且 x 坐标也被读取。这里出了什么问题? 代码:
Coordinate addCoordinate(String coordinateString) {
System.out.print(coordinateString);
Scanner in = new Scanner(coordinateString);
Coordinate coordinate = new Coordinate();
in.useDelimiter(",");
coordinate.x = in.nextInt();
System.out.print(coordinate.x);
coordinate.y = in.nextInt();
System.out.print(coordinate.y);
return coordinate;
}
【问题讨论】:
-
问题是分隔符模式需要匹配所有分隔符。当您将其设置为
","时,它将仅匹配一个逗号作为分隔符。空白字符(空格、换行符等)将被视为令牌的一部分。这将导致nextInt吐...由于数字开头或结尾的多余空格。我的建议:仔细阅读Scanner的 javadocs。 -
糟糕...已修复。
-
但是如果字符串是
"2,6\n"或"2,6 "(6 之后的换行符或空格)并且因为使用print(coordinateString)而不是println,我们在输出中看到的换行必须来自字符串
标签: java coordinates delimiter comma