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

Java 中关于 nextInt()、next() 和 nextLine() 的理解
一、扫描控制台输入

这个例子是常常会用到,但是如果没有 Scanner,你写写就知道多难受了。
当通过 new Scanner(System.in) 创建一个 Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给 Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用 Scanner 的 nextLine() 方法即可。

/**
* 扫描控制台输入
*
* @author leizhimin 2009-7-24 11:24:47
*/
public class TestScanner { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("请输入字符串:"); while (true) { String line = s.nextLine(); if (line.equals("exit")) break; System.out.println(">>>" + line); } }
}

请输入字符串: 
234 
>>>234 
wer 
>>>wer 
bye 
>>>bye 
exit

Process finished with exit code 0

先写这里吧,有空再继续完善。

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

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

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

使用默认的空格分隔符:

        public static void main(String[] args) throws FileNotFoundException { 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()); } }

123 
asdf 
sd 
45 
789 
sdf 
asdfl,sdf.sdfl,asdf 
......asdfkl 
las

Process finished with exit code 0

将注释行去掉,使用空格或逗号或点号作为分隔符,输出结果如下:
123 
asdf 
sd 
45 
789 
sdf 
asdfl 
sdf 
sdfl 
asdf

asdfkl

las

Process finished with exit code 0

四、一大堆 API 函数,实用的没几个

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

下面这几个相对实用:

delimiter() 
          返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
hasNext() 
          判断扫描器中当前扫描位置后是否还存在下一段。(原 APIDoc 的注释很扯淡)
hasNextLine() 
          如果在此扫描器的输入中存在另一行,则返回 true。
next() 
          查找并返回来自此扫描器的下一个完整标记。
nextLine() 
          此扫描器执行当前行,并返回跳过的输入信息。

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

看不到价值的扫描过程
        public static void main(String[] args) throws FileNotFoundException { 
                InputStream in = new FileInputStream(new File("C:\\AutoSubmit.java")); 
                Scanner s = new Scanner(in); 
                while(s.hasNextLine()){ 
                        System.out.println(s.nextLine()); 
                } 
        }

package own;

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.HttpURLConnection; 
import java.net.ProtocolException; 
import java.net.URL;

import com.verisign.uuid.UUID;

/** 
* @author wangpeng 

*/ 
public class AutoSubmit {

/** 
    * @param args 
    * @throws Exception    
    */ 
  public static void main(String[] args) throws Exception {

... 在此省略 N 行

Process finished with exit code 0

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

转载于:https://www.cnblogs.com/huxins/p/8989543.html

java 中的 Scanner相关推荐

  1. scanner 获取控制台信息_关于java.util.scanner:如何使用Java中的Scanner类从控制台读取输入?...

    如何使用Scanner类从控制台读取输入? 像这样: System.out.println("Enter your username:"); Scanner = input(); ...

  2. java中的scanner是什么_java中的Scanner类是什么?如何使用?

    java中的Scanner类是什么?如何使用? 发布时间:2020-05-20 16:36:48 来源:亿速云 阅读:204 作者:鸽子 Scanner类介绍 java.util.Scanner 是 ...

  3. Java中,Scanner键盘输入如何赋值给char类型变量

    初学java的人都知道,通过Scanner键盘输入可以变量赋不同类型的值,int,float,double等都对应这不同的next方法,但是今天我发现Scanner不太好直接给char类型赋值,如下图 ...

  4. java中读取单个字符_如何使用Java中的Scanner类读取单个字符?

    从Java 1.5开始引入Scanner类.此类接受File,InputStream,Path和String对象,使用正则表达式逐个令牌读取所有原始数据类型和String(从给定的源)令牌.默认情况下 ...

  5. java中的scanner是什么_Java中的Scanner类是什么?何时引入?

    直到Java 1.5从用户程序员那里读取数据之前,都依赖于字符流类和字节流类. 从Java 1.5开始引入Scanner类.此类接受File,InputStream,Path和String对象,使用正 ...

  6. Java中的Scanner用法解析

    一.Scanner类简介 Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序. 简介 Scanner类是java.util包中的一个类 作用 常用于控制台的 ...

  7. Java中的Scanner类和String类

    1:Scanner的使用(了解)     (1)在JDK5以后出现的用于键盘录入数据的类. (2)构造方法: A:讲解了System.in这个东西.             它其实是标准的输入流,对应 ...

  8. JAVA中的scanner.Next和scanner.NextLine

    Scanner类的Next()和NextLine()方法用于获取从键盘输入的字符串,每读取一个字符前需要检测下一个字符是否存在: 前者用hasNext()检测,eg:if(scanner.hasNex ...

  9. java中scanner是什么意思_java中scanner是什么

    java中的scanner是一个类,是用于扫描输入文本的新的实用程序:当在Eclipse中编写Java程序时,如果变量是需要手动输入的时候,此时就可以用到scanner类. java中的scanner ...

最新文章

  1. VUE的本地应用-V- bind
  2. 科大讯飞公然吹捧“凌晨两点边工作边哄娃”的“奋斗文化”,引发网友极度不适!...
  3. 24.下拉列表的交互事件
  4. 读《程序员必读的职业规划书》
  5. 服务器客户端回射程序-自己设计包的结构
  6. lollipods耳机蓝牙连接方法
  7. 洛谷 P4551 最长异或路径
  8. 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。...
  9. 正则表达式是匹配模式,要么匹配字符,要么匹配位置
  10. (pytorch-深度学习)使用pytorch框架nn.RNN实现循环神经网络
  11. VMWare关闭beep声
  12. Chinalinuxpub.com初学版精华
  13. 大型网站技术架构(五)--网站高可用架构
  14. 【Appium实战】如何使用mumu模拟器模拟安卓手机
  15. sketch插件 android,用这个免费的Sketch插件,帮你完美还原安卓界面!
  16. 一周信创舆情观察(1.10~1.16)
  17. 软件工程导论复试——一、软件工程学概述
  18. 支付结算系统如何应对高并发、热点账户等问题
  19. android 蓝牙打印机(ESC/POS 热敏打印机),打印菜单小票和图片,对蓝牙配对和连接打印功能进行了封装,让你超快实现蓝牙打印功能
  20. bbs.php ww1.dzxa.me_bbs论坛小结

热门文章

  1. 反转链表—leetcode206
  2. linux中fork和exec
  3. C语言代码规范(编程规范)
  4. 电路知识--认识原理图(四)
  5. 第三章 PX4-Pixhawk-SPI底层驱动解析
  6. python怎么在官网下载pygame_Python中pip以及Pygame的下载与安装
  7. 数据结构课程设计(VS2012-c语言):算术表达式实现(加减乘除)
  8. [BUUCTF-pwn]——xman_2019_format
  9. I/O复用函数的使用——epoll
  10. java清除输出内容_java – 从JSch中的命令输出中删除shell东西...