栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java Scanner类中的字符串格式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431056.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号