Java 使用扫描程序分析逗号分隔的值:不匹配异常
我意识到有很多关于这个主题的话题,但我无法找到一个能回应这个案例的话题:Java 使用扫描程序分析逗号分隔的值:不匹配异常,java,Java,我意识到有很多关于这个主题的话题,但我无法找到一个能回应这个案例的话题: Scanner s = new Scanner(input).useDelimiter("(\\s|,)+"); 我有多行输入,格式无法编辑 例如,我有: 一, 0.55,0.20,0.05 1,2,3 正如您所知道的,第一个是一个整数,没有任何分隔符。 接下来,我们有3个双精度字符,由逗号分隔 我成功地获得了nextInt()。 当我尝试nextDouble()时,会出现输入不匹配异常 我已经试着使用英语和我们 那么
Scanner s = new Scanner(input).useDelimiter("(\\s|,)+");
我有多行输入,格式无法编辑
例如,我有:
一,
0.55,0.20,0.05
1,2,3
正如您所知道的,第一个是一个整数,没有任何分隔符。
接下来,我们有3个双精度字符,由逗号分隔
我成功地获得了nextInt()。
当我尝试nextDouble()时,会出现输入不匹配异常
我已经试着使用英语和我们
那么,如何读取这些输入呢?
第一个是整数,后面是3个双精度,还有3个整数
以下是相关代码:
Scanner in = new Scanner(System.in); // tried delimiters and locale here
int tests = in.nextInt();
System.out.println(in.nextDouble()); //this is where the input exception occurs
默认情况下,扫描程序使用空白作为分隔符。您可以设置自定义分隔符(本例中为逗号):
不过,如果我使用该分隔符,请更准确地说:“Scanner in=new Scanner(System.in).useDelimiter(“\\s*|,””);我的输出为0。0@WilhelmSorban这就是我没有测试的原因\数字之间的s*匹配,导致值为0.0。我修正了我的答案。谢谢,现在可以了。你能解释一下为什么字符串中有这些字符吗?我以前尝试过使用useDelimiter(“,”),比如在中使用逗号作为分隔符,但这不起作用。此处的文档有点混乱,仅使用逗号不起作用,因为有些数字由空格/换行符(=空格)分隔。这表示
((空格或,)一次或多次)
。请参阅以了解更多信息。事实上,由于默认情况下空格用作分隔符,我认为如果我使用分隔符(“,”),它将是空格或“,”,现在一切都有意义了,谢谢!