小编典典

示例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!

five

That's not a number!

-3

Please enter a positive number!

5

Thank 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) 5

false

(boolean) false

blah

(String) blah

1.1

(double) 1.1

100000000000

(long) 100000000000

exit

请注意,测试顺序很重要。如果是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!

5

That's not a vowel!

z

That's not a vowel!

e

Thank you! Got e

2020-01-10

java中没有scanner_如何使用java.util.Scanner验证输入?相关推荐

  1. java中的jpa_JPA教程–在Java SE环境中设置JPA

    java中的jpa JPA代表Java Persistence API,它基本上是一个规范,描述了一种将数据持久存储到持久存储(通常是数据库)中的方法. 我们可以将其视为类似于Hibernate之类的 ...

  2. Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位

    Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位 一.概述 1.在浏览一篇文章时,看到一个介绍 ,使用位移操作替代乘除法 ,若位移多位该怎么计算呢?  二.代码理解 ...

  3. Java中的字符集编码入门Java中的增补字符

    转载自:http://jiangzhengjun.iteye.com/blog/512083 Java中的字符集编码入门Java中的增补字符 博客分类: 字符集编码 Java Java号称对Unico ...

  4. java中怎样克隆,如何在Java中克隆列表?

    要克隆Java中的列表,最简单的方法是使用ArrayList.clone()方法- 示例import java.util.ArrayList; public class Demo { public s ...

  5. 在java中goto是意思,关于Java中的goto语句

    自学Java遇到的问题1 goto语句的问题 1.1 背景 2.1 尝试 3.1 总结 goto语句的问题 今天是我自学Java第4天,开始写博客记录学习中遇到的问题.给后来者一些借鉴,也给自己以后回 ...

  6. java中timer和timertask_使用Java中的Timer和TimerTask

    有的时候我们需要每隔一段时间去执行某个任务,在Java中提供了Timer and TimerTask来完成这个任务,本文提供一个应用程序的源代码告诉你如何使用这两个类. Timer和TimerTask ...

  7. Java中的enum详细解析------Java 语言中 Enum 类型的使用介绍

    Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常 ...

  8. java 中的枚举_说说Java中的枚举(一)

    在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的.例如星期一到星期日七个数据元素组成了一周的"数据 ...

  9. java中变量 关键字_基于java的voliate关键字详解

    voliate关键字的作用: 一.内存可见性 基于缓存一致性协议,当用voliate关键字修饰的变量改动时,cpu会通知其他线程,缓存已被修改,需要更新缓存.这样每个线程都能获取到最新的变量值. 二. ...

最新文章

  1. Shell 函数、数组与正则表达式
  2. spring外部化配置
  3. 问题:为命名空间,在此被用作类型和此项目作为引用添加将导致循环依赖项
  4. linux中三个time:atime、mtime、ctime
  5. 救基友记2_JAVA
  6. 《Cocos2D-x权威指南》——3.7 容器类
  7. 说出你的需求,我们AI给你写代码 | MIT新研究
  8. Unity使用FGUI的基本操作(一)
  9. 信息系统管理师备考指南
  10. 阿帕奇服务器文件上传,windows基于阿帕奇+PHP服务器,实现vc++文件上传功能
  11. 断点续传视频无法播放问题,合块发现视频无法播放
  12. 迷茫了,就带她去一趟阿鲁巴K
  13. java随机生成三位数
  14. 每天花半小时给孩子讲故事,把他培养成依赖书的人种
  15. 萨班斯-奥克斯利法案 (SOX) 特权账号管理
  16. RV1126 Linux 以太网MAC PHY 芯片8201f gmac dts配置
  17. win10系统怎么搜索xp计算机,win10安装xp系统的详细操作步骤
  18. Redis入门指南之复制
  19. php die 跳转,php里or die的常见用法
  20. echarts 树图属性设置

热门文章

  1. Adobe Livecycle ES Workbench
  2. 如何通过query获得一个product的所有附件
  3. Java初始化顺序研究
  4. nodejs连接redis,redis服务器的地址格式应该怎么写
  5. SAP Cloud for Customer销售订单External Note的建模细节
  6. 关于SAP Fiori Smart Template开发的一些实际例子
  7. 找出SAP OData service出错根源的小技巧
  8. 无法使用tomcat6.exe启动服务
  9. java spring mvc 上传_Java Spring MVC 上传下载文件配置及controller方法详解
  10. win7 asp虚拟服务器,win7怎么利用ASP获取服务器IP地址 win7利用ASP获取服务器IP地址教程...