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

如何使用java.util.Scanner验证输入?

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

如何使用java.util.Scanner验证输入?

示例1:验证正整数

这是一个

hasNextInt()
用于int从输入中验证肯定的简单示例。

Scanner sc = new Scanner(System.in);int number;do {    System.out.println("Please enter a positive number!");    while (!sc.hasNextInt()) {        System.out.println("That's not a number!");        sc.next(); // this is important!    }    number = sc.nextInt();} while (number <= 0);System.out.println("Thank you! Got " + number);

结果:

Please enter a positive number!fiveThat's not a number!-3Please enter a positive number!5Thank you! Got 5

请注意

Scanner.hasNextInt()
,与更详细
try/catch Integer.parseInt/ NumberFormatException
组合相比,使用起来要容易得多。通过合同,一个
Scanner
保证,如果它
hasNextInt()
,然后
nextInt()
将安静地给你int,并不会引发任何
NumberFormatException/ InputMismatchException/ NoSuchElementException

示例2:
hasNextXXX
同一令牌上有多个

请注意,上面的代码段包含一个

sc.next()
语句,以使Scanner直到它前进
hasNextInt()
。重要的是要意识到,没有一种
hasNextXXX
方法可以 Scanner 超越任何输入!你会发现,如果你从代码段中省略了这一行,那么它将在无效输入上陷入无限循环!

这有两个结果:

如果你需要跳过“垃圾”输入失败的

hasNextXXX
测试,那么你需要提前Scanner一个这样或那样的(例如
next()
nextLine()
,skip等)。
如果一项
hasNextXXX
测试失败,你仍然可以进行测试
hasNextYYY

这是执行多个
hasNextXXX
测试的示例。

Scanner sc = new Scanner(System.in);while (!sc.hasNext("exit")) {    System.out.println(        sc.hasNextInt() ? "(int) " + sc.nextInt() :        sc.hasNextLong() ? "(long) " + sc.nextLong() :          sc.hasNextDouble() ? "(double) " + sc.nextDouble() :        sc.hasNextBoolean() ? "(boolean) " + sc.nextBoolean() :        "(String) " + sc.next()    );}

输出结果:

5(int) 5false(boolean) falseblah(String) blah1.1(double) 1.1100000000000(long) 100000000000exit

请注意,测试顺序很重要。如果是

Scanner hasNextInt()
,那么它也是
hasNextLong()
,但不一定true是相反的方式。通常,你想在进行更通用的测试之前先进行更具体的测试。

示例3:验证元音

Scanner具有正则表达式支持的许多高级功能。这是一个使用它来验证元音的示例。

Scanner sc = new Scanner(System.in);System.out.println("Please enter a vowel, lowercase!");while (!sc.hasNext("[aeiou]")) {    System.out.println("That's not a vowel!");    sc.next();}String vowel = sc.next();System.out.println("Thank you! Got " + vowel);

输出结果:

Please enter a vowel, lowercase!5That's not a vowel!zThat's not a vowel!eThank you! Got e


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

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

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