Java Scanner类中的字符串格式

Java Scanner类中的字符串格式,第1张

Java Scanner类中的字符串格式

有几种可能的解决方案,但我相信以下内容将为您提供与其他输入一致的行为:

System.out.println("Enter an floating point number: ");double d = i.nextDouble();i.skip("((?<!\R)\s)*"); // skip whitespace, stopping after any newlineSystem.out.println("Enter a string: ");String str = i.nextLine();

如果需要,这种方法将允许您在一行上输入所有输入。

例如:

1 1.2结果是

但是,如果您确实希望用户

Enter
在每次输入后都按一下,则使用Scanner的nextLine()方法读取所有输入,然后根据需要进行解析(使用Integer.parseInt等)将是最一致的。


Java 9

由于Java 9中的错误,

(?> ...)
必须在换行匹配器周围添加原子分组
R
。有关详细信息,请参见错误报告JDK-8176983。

i.skip("((?<!(?>\R))\s)*"); // skip whitespace, stopping after any newline        // Compatibility Note: Java 9 safe use of R

此代码也可以正常工作,并且如果用于Java
8,也不会引起任何问题,因此实际上,我建议您在代码中使用此变通版本,只是为了安全起见(例如,如果有人可以复制/粘贴或将目标设置为其他目标) JDK)。


Java 7及更早版本

换行匹配器

R
在Java-8或更高版本中可用。在该版本之前,您将必须使用“等效”模式,
u000Du000A|[u000Au000Bu000Cu000Du0085u2028u2029]
但要使其真正等效,实际上必须将其包装在原子分组中
(?>...)
。有关详细信息,请参见文档错误报告JDK-8176029。

i.skip("((?<!(?>\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]))\s)*"); // skip whitespace, stopping after any newline


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5104539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存