【发布时间】:2011-04-02 20:17:54
【问题描述】:
我需要解析的文件中有以下内容。
((-2, -1 ), ( 4, 2) ) ((-1.2, 0), (0, 0))
((0, 0), (10, -1))
((5, 3), (5, 4)) ((5, 1) , (5, 5))
((8, 3), (10, 3))
((8, 5), (11.5, 5))
到目前为止,我已经扫描了文件并逐行获取输入,将它们保存为字符串,因此一个字符串将是 ((-2, -1 ), ( 4, 2) ) ((-1.2, 0), (0, 0))。我的问题是从这里去哪里。如何从这个字符串中提取双打。我尝试使用括号作为分隔符,以及将所有括号更改为逗号,然后使用逗号作为分隔符,但这两种方式都会给我错误。有什么想法吗?
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed group near index 1 at java.util.regex.Pattern.error(Unknown Source) at
java.util.regex.Pattern.accept(Unknown Source) at
java.util.regex.Pattern.group0(Unknown Source) at
java.util.regex.Pattern.sequence(Unknown Source) at
java.util.regex.Pattern.expr(Unknown Source) at
java.util.regex.Pattern.compile(Unknown Source) at
java.util.regex.Pattern.<init>(Unknown Source) at
java.util.regex.Pattern.compile(Unknown Source) at
java.lang.String.replaceAll(Unknown Source)
这样做的全部目的是从这些双打中创造积分。例如,((0, 0), (10, -1)) 将创建两个点,(0,0) 和 (10, -1)。我已经创建了点类,它在构造函数中接受了两个双精度数。 这是我尝试过的:
String toParse = "((0, 0), (10, -1))";
toParse.replaceAll("(", ",");
toParse.replaceAll(")", ",");
Scanner stringScanner = new Scanner(toParse);
stringScanner.useDelimiter(",");
while(stringScanner.hasNextDouble()){
等
【问题讨论】:
-
“给你错误”是什么意思?邮政编码。我们无法猜测您实际发生了什么。
-
这里的预期输出/结果是什么?你想从文本中解析什么?
-
听起来你只是在尝试不同的东西,而没有考虑它们实际上在做什么。对于给定的输入行,您需要什么输出?向我们展示您迄今为止尝试过的代码。
-
请不要将堆栈跟踪粘贴到评论中。
-
您还删除了我的编辑,我修复了您的代码格式并将堆栈跟踪放入其中。请向我们展示您的代码。
标签: java string parsing double