我正在尝试从文件中读取坐标。格式是起点,终点,多边形。这是一个例子:
1, 3
34, 19
0, 14; 6, 19; 9, 15; 7, 8; 1, 9
2, 6; 17, 6; 17, 1; 2, 1
我使用BufferedReader读取每一行并确认它正在工作。我正在尝试使用Scanner
来解析数字的每一行作为双精度数,因此我使用Scanner的nextDouble
方法,但是当我运行代码时它会抛出InputMismatchException
第一次阅读。以下是这些行的逻辑:
文件行 - " 1,3"
代码:
lineReader.nextDouble();
有什么想法吗?
答案 0 :(得分:0)
请参阅Scanner课程。它有一个例子,如何使用Scanner
的分隔符。
扫描仪s =新扫描仪(输入).useDelimiter(“\\ s * fish \\ s *”);
以下是从文件中读取输入的示例。
public static void main(String[] args) {
try (Scanner in = new Scanner(new File("D:/INPUT_OUTPUT/Data_Stack.txt"))) {
// Adding delimiters.
in.useDelimiter("\\s*,\\s*|\\s*\\n\\s*|\\s*;\\s*");
// Reading files.
while (in.hasNextDouble()) {
System.out.println(in.nextDouble());
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
文件中的数据( Data_Stack.txt ) - :
1, 3
34, 19
0, 14; 6, 19; 9, 15; 7, 8; 1, 9
2, 6; 17, 6; 17, 1; 2, 1
<强>输出 - :强>
1.0
3.0
34.0
19.0
0.0
14.0
6.0
19.0
9.0
15.0
7.0
8.0
1.0
9.0
2.0
6.0
17.0
6.0
17.0
1.0
2.0
1.0
说明 - :从Scanner我们可以看到 - :
扫描仪使用分隔符模式将其输入分解为标记, 默认情况下匹配空格。
所以我们必须添加所需的分隔符来读取我们的数据。必填分隔符为,
,\n
和;
,已添加到代码行in.useDelimiter("\\s*,\\s*|\\s*\\n\\s*|\\s*;\\s*");
中。
将分隔符添加到Scanner
后正确读取数据。
答案 1 :(得分:-1)
Scanner.next()为'1,',类型为String。
尝试以下代码:
(setq mac-command-modifier 'meta)
(setq mac-escape-modifier nil)
然后你就可以理解了。