java.util.Scanner是Java5的新特征,主要功能是简化文本扫描。这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java API文档中列举了大量的API方法,但是都不怎么地。

一、扫描控制台输入

这个例子是常常会用到,但是如果没有Scanner,你写写就知道多难受了。

当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。/*** 扫描控制台输入

*

*@authorleizhimin 2009-7-24 11:24:47*/

public classTestScanner {public static voidmain(String[] args) {

Scanner s= newScanner(System.in);

System.out.println("请输入字符串:");while (true) {

String line=s.nextLine();if (line.equals("exit")) break;

System.out.println(">>>" +line);

}

}

}

请输入字符串:234

>>>234wer>>>wer

bye>>>bye

exit

Process finished with exit code0先写这里吧,有空再继续完善。

二、如果说Scanner使用简便,不如说Scanner的构造器支持多种方式,构建Scanner的对象很方便。

可以从字符串(Readable)、输入流、文件等等来直接构建Scanner对象,有了Scanner了,就可以逐段(根据正则分隔式)来扫描整个文本,并对扫描后的结果做想要的处理。

三、Scanner默认使用空格作为分割符来分隔文本,但允许你指定新的分隔符

使用默认的空格分隔符:public static void main(String[] args) throwsFileNotFoundException {

Scanner s= new Scanner("123 asdf sd 45 789 sdf asdfl,sdf.sdfl,asdf ......asdfkl las");//s.useDelimiter(" |,|\\.");

while(s.hasNext()) {

System.out.println(s.next());

}

}123asdf

sd45

789sdf

asdfl,sdf.sdfl,asdf

......asdfkl

las

Process finished with exit code0将注释行去掉,使用空格或逗号或点号作为分隔符,输出结果如下:123asdf

sd45

789sdf

asdfl

sdf

sdfl

asdf

asdfkl

las

Process finished with exit code0四、一大堆API函数,实用的没几个

(很多API,注释很让人迷惑,几乎毫无用处,这个类就这样被糟蹋了,启了很不错的名字,实际上做的全是龌龊事)

下面这几个相对实用:

delimiter()

返回此 Scanner 当前正在用于匹配分隔符的 Pattern。

hasNext()

判断扫描器中当前扫描位置后是否还存在下一段。(原APIDoc的注释很扯淡)

hasNextLine()

如果在此扫描器的输入中存在另一行,则返回true。

next()

查找并返回来自此扫描器的下一个完整标记。

nextLine()

此扫描器执行当前行,并返回跳过的输入信息。

五、逐行扫描文件,并逐行输出

看不到价值的扫描过程public static void main(String[] args) throwsFileNotFoundException {

InputStream in= new FileInputStream(new File("C:\\AutoSubmit.java"));

Scanner s= newScanner(in);while(s.hasNextLine()){

System.out.println(s.nextLine());

}

}packageown;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.net.HttpURLConnection;importjava.net.ProtocolException;importjava.net.URL;importcom.verisign.uuid.UUID;/***@authorwangpeng

**/

public classAutoSubmit {/***@paramargs

*@throwsException*/

public static void main(String[] args) throwsException {

...在此省略N行

Process finished with exit code0Java对字符串支持还是比较弱的,尽管Java一直在努力。

java 中的scanner_java 中的Scanner相关推荐

  1. java控制台输入 scanner_java控制台输入Scanner、InputStreamReader、Console说明

    0 引言 从控制台中读取数据是一个比较常用的功能,在 JDK 5.0 以前的版本中的实现是比较复杂的,需要手工处理系统的输入流.有意思的是,从 JDK 5.0 版本开始,能从控制台中输入数据的方法每增 ...

  2. 7、Java基础——从控制台输入:Scanner类的的用法、数据类型转换、字符型的运算、print与println的区别、Java中的转义字符

    目录 课前先导 一.Scanner类的用法 二.Scanner语句分析 1.Scanner类 2.Scanner sc = new Scanner(System.in) 3.Scanner获取不同类型 ...

  3. 浅入深出之Java集合框架(中)

    Java中的集合框架(中) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到浅入深出之Java集合框架(下). ...

  4. 数据结构与算法-java笔记一 更新中

    数据结构与算法-java笔记一 更新中 数据结构与算法 什么是数据结构.算法 数据结构学了有什么用: 线性结构 数组 特点 应用 链表 存储结构 链表类型 单链表 双向链表 双向循环链表 链表与数组的 ...

  5. Java——从前序与中序遍历序列构造二叉树

    文章目录 前言 一.已知前序和中序构造二叉树,并层次输出 二.问题分析 1.构造二叉树 2.层次遍历二叉树 三.总结 前言 算法分析--分治法 一.已知前序和中序构造二叉树,并层次输出 二.问题分析 ...

  6. Java如何从键盘中进行输入

    Java如何从键盘中进行输入 package test; import java.util.Scanner; public class KeyboardInput {public static voi ...

  7. Java实现统计字符串中的字母和数字分别有多少个

    Java实现统计字符串中的字母和数字分别有多少个 需求 编写程序,由键盘录入一个字符串,统计字符串中英文字母和数字分别有多少个.比如:Hello12345World中字母:10个,数字:5个. 设计思 ...

  8. java有道_java中的各种流(老师的有道云笔记)

    内存操作流-字节 之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操作流.此时得使用内存流完成内存的输入和输出操作. 如果程序运行过程中要产生一些临时文件,可采用虚拟文 ...

  9. java string 占位符_驳《阿里「Java开发手册」中的1个bug》?

    前两天写了一篇关于<阿里Java开发手册中的 1 个bug>的文章,评论区有点炸锅了,基本分为两派,支持老王的和质疑老王的. 首先来说,无论是那一方,我都真诚的感谢你们.特别是「二师兄」, ...

最新文章

  1. Struts+DAO框架搭建完成!(源码)
  2. [react] React的严格模式有什么用处?
  3. 实验报告总结_小学四年级数学下册全册知识点总结 ,家有四年级学生的家长收藏...
  4. Arcengine实现创建网络数据集札记(二)
  5. iOS 开发之几个 Demo 分享网站
  6. 算法-递归求1-n的阶乘
  7. 2011年7月21日 星期四 new
  8. 2020-12-28 learning opencv3: 十一:resize, pyrDown, buildPyramid, pyrUp
  9. 52个外文文献论文网站,写论文的你必囤!
  10. WPF高性能绘图之DrawingCanvas、DrawingVisual、Button的同时使用
  11. iphone与计算机连接,苹果usb怎么与电脑连接_苹果怎么设置与电脑连接的图文步骤...
  12. 2018 ISC | 最炫酷的展台和最火爆的分论坛
  13. 一个花里胡哨的渐变雷达图 echarts图表
  14. JavaScript实例-文字特效1-文字滚动
  15. 【字体转换】快速实现繁简字体相互转换
  16. 数据可视化--实验五:高维非空间数据可视化
  17. nvcc fatal : Unsupported gpu architecture ‘compute_86‘
  18. Python | 怎么在基金定投上实现收益最大化
  19. c语言tab什么意思_速收藏 | 学习C语言最需要记住的基础知识!!
  20. jQuery点击按钮新增dom

热门文章

  1. 白话学习MVC(七)Action的执行一
  2. 请推荐好的工作流产品
  3. jvm学习笔记(3)——java对象的内存分配和对象的回收(GC)
  4. JDK源码(10)-Integer(用处最多,重点讲解)
  5. 得到的概率值_手把手教你将矩阵概率画成图
  6. java 检测表情符号_一个能在字符串中识别出 Emoji 的简单工具 (支持JavaScript和Java)...
  7. Python使用itchat获取微信好友
  8. 【8】万魂杀服务器开发方面之新版GM工具
  9. 译:重置/还原Windows IIs设置为默认设置
  10. c如何调用java_JNI学习------C语言调用Java (转)