Scanner类用于获取键盘输入(是一个基于正则表达式的文本扫描器),它可以从文件、字符串、输入流中解析出基本类型值和字符串值。Scanner类提供了多个构造器,不同的构造器可以接收文件、字符串和输入流作为数据源,用于从文件、字符串和输入流中解析数据。

Scanner类主要提供了两个方法来扫描输入:
1)hasNextXx():是否还有下一个输入项,其中Xxx可以是Int、Long等代表基本数据类型的字符串。如果只是判断是否包含下一个字符串,则直接使用hasNext()。

2)nextXxx():获取下一个输入项。Xxx的含义同上。

默认情况下,Scanner使用空白(包括空格、Tab空白和回车)作为多个输入项的分隔符。

下面程序使用Scanner来获得用户的键盘输入:

public class Test{public static void main(String[] args){//System.in代表键盘输入Scanner sc = new Scanner(System.in);//下面这行代码是把回车作为分隔符sc.useDelimiter("\n");//判断是否还有下一个输入项while(sc.hasNext()){//输出输入项System.out.println("键盘输入的内容是:"+sc.next());    }}
}

运行上面的程序,程序会通过Scanner不断的从键盘读取键盘输入,然后打印到控制台,程序运行效果如下:

java
键盘输入的内容是:java
c++
键盘输入的内容是:c++
html
键盘输入的内容是:html

为Scanner设置分隔符使用 useDelimiter(String pattern)方法即可,该方法的参数是一个正则表达式(后面发布内容会介绍到),如果把上面程序这一行sc.useDelimiter("\n")注释掉,该程序就会把键盘的每行输入当成一个输入项,不会以空格、Tab空白或回车等作为分隔符。

其实,Scanner提供了两个简单的逐行读取的方法:

1)boolean hasNextLine():返回输入源中是否还有下一行。

2)String nextLine():返回输入源中下一行的字符串。

Scanner除了可以获取字符串输入项之外,还可以获取任意基本类型的输入项,如下程序:

public class Test{public static void main(String[] args){//System.in代表键盘输入Scanner sc = new Scanner(System.in);//判断是否还有下一个long型整数while(sc.hasNextLong()){//输出输入项System.out.println("键盘输入的内容是:"+sc.nextLong());    }}
}

上面程序通过hasNextLong()和nextLong()两个方法可以直接获取输入的Long型整数,如果需要获取其它基本类型的输入项,则可以用相同的方法。

Scanner除了能读取键盘输入外,还可以读取文件输入。只要在创建Scanner对象时传入一个File对象作为参数即可,例如下面的示例:

public class Test{public static void main(String[] args) throws Exception{//Scanner读取文件内容:将一个File对象作为Scanner的构造器参数Scanner sc = new Scanner(new File("Test.java"));System.out.println("Test.java文件内容如下:");//判断是否还有下一行while(sc.hasNextLine()){//输出文件的下一行
          System.out.println(sc.nextLine());    }}
}

上面程序因为涉及IO读取,可能引发IO异常,所以程序声明throws Exception表明main方法不处理任何异常。

欢迎关注微信公众号【Java典籍】,收看更多Java技术干货!

  ▼微信扫一扫下图↓↓↓二维码关注

 

转载于:https://www.cnblogs.com/bingyimeiling/p/10580447.html

Scanner类详解相关推荐

  1. JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  2. java utill scanner_(转)java.util.Scanner应用详解

    java.util.Scanner应用详解 java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java A ...

  3. OpenCV Mat类详解和用法(官网原文)

    参考文章:OpenCV Mat类详解和用法 我马克一下,日后更 官网原文链接:https://docs.opencv.org/3.2.0/d6/d6d/tutorial_mat_the_basic_i ...

  4. 转载:c+string类详解

    C++ string 类详解 </h1><div class="clear"></div><div class="postBod ...

  5. JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  6. Android复习14【高级编程:推荐网址、抠图片上的某一角下来、Bitmap引起的OOM问题、三个绘图工具类详解、画线条、Canvas API详解(平移、旋转、缩放、倾斜)、矩阵详解】

    目   录 推荐网址 抠图片上的某一角下来 8.2.2 Bitmap引起的OOM问题 8.3.1 三个绘图工具类详解 画线条 8.3.16 Canvas API详解(Part 1) 1.transla ...

  7. Java中的Runtime类详解

    Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...

  8. [NewLife.XCode]实体类详解

    NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...

  9. basicdatasourcefactory mysql_Java基础-DBCP连接池(BasicDataSource类)详解

    Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中"获得连接"或"释放资源 ...

最新文章

  1. 聊聊RibbonLoadBalancerClient的choose方法
  2. Java笔试题库之选题题篇【1-70题】
  3. 【C/C++学习】之七、指向函数的指针
  4. 研究人员发现Office Word 0Day攻击 这个漏洞绕过了word宏安全设置 绿盟科技、McAfee及FireEye发出警告...
  5. Server 2012 Log off 按键
  6. java 歌词解析代码_网易云歌词爬取(java)
  7. 复杂网络分析软件NetworkX和UCINET数据关联的方法
  8. 图解深度学习-三种梯度下降法可视化(BGD,SGD,MBGD)
  9. 详解麦肯锡方法:结构化分析问题的技术
  10. cpu、内存、显卡参数说明
  11. Anaconda 最新版本的下载和安装
  12. 常见反爬虫策略与绕过方法
  13. VBlog项目代码理解之后端
  14. 面试案例-String Interpolation的实现(Java实现)
  15. PC端的TIM无法打开?打开“QPCore Service”服务 ,访问被拒?关掉杀毒软件
  16. linux mint 使用软件管理器安装软件
  17. pandas过滤某列含有nan 的行
  18. 在谷歌上安装倍速播放的插件video-speed-controller
  19. HTTP协议 - 协议格式
  20. Android淘宝三方登陆

热门文章

  1. 【Network Security!】ping命令的用法(全)
  2. rtsp连接断开_live555学习之RTSP连接建立以及请求消息处理过程
  3. 网络营销专员浅析网络营销推广基本形式你更中意哪种?
  4. 网站图片优化的小技巧分享
  5. 计算机控制直流电机闭环调速实验,最小拍控制系统及直流电机闭环调速控制系统设计和实现实验报告...
  6. 数据集标注工具_如何提高数据标注质量,提供精细化标注数据集?丨曼孚科技...
  7. Java基础-注解和反射
  8. 开发日记-20190702 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 8
  9. 开发日记-20190623 关键词 休眠(可耻)
  10. mongodb 关闭服务 mongod -f /root/mongodb/bin/xx.conf --shutdown