java 中的 Scanner
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相关推荐
- scanner 获取控制台信息_关于java.util.scanner:如何使用Java中的Scanner类从控制台读取输入?...
如何使用Scanner类从控制台读取输入? 像这样: System.out.println("Enter your username:"); Scanner = input(); ...
- java中的scanner是什么_java中的Scanner类是什么?如何使用?
java中的Scanner类是什么?如何使用? 发布时间:2020-05-20 16:36:48 来源:亿速云 阅读:204 作者:鸽子 Scanner类介绍 java.util.Scanner 是 ...
- Java中,Scanner键盘输入如何赋值给char类型变量
初学java的人都知道,通过Scanner键盘输入可以变量赋不同类型的值,int,float,double等都对应这不同的next方法,但是今天我发现Scanner不太好直接给char类型赋值,如下图 ...
- java中读取单个字符_如何使用Java中的Scanner类读取单个字符?
从Java 1.5开始引入Scanner类.此类接受File,InputStream,Path和String对象,使用正则表达式逐个令牌读取所有原始数据类型和String(从给定的源)令牌.默认情况下 ...
- java中的scanner是什么_Java中的Scanner类是什么?何时引入?
直到Java 1.5从用户程序员那里读取数据之前,都依赖于字符流类和字节流类. 从Java 1.5开始引入Scanner类.此类接受File,InputStream,Path和String对象,使用正 ...
- Java中的Scanner用法解析
一.Scanner类简介 Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序. 简介 Scanner类是java.util包中的一个类 作用 常用于控制台的 ...
- Java中的Scanner类和String类
1:Scanner的使用(了解) (1)在JDK5以后出现的用于键盘录入数据的类. (2)构造方法: A:讲解了System.in这个东西. 它其实是标准的输入流,对应 ...
- JAVA中的scanner.Next和scanner.NextLine
Scanner类的Next()和NextLine()方法用于获取从键盘输入的字符串,每读取一个字符前需要检测下一个字符是否存在: 前者用hasNext()检测,eg:if(scanner.hasNex ...
- java中scanner是什么意思_java中scanner是什么
java中的scanner是一个类,是用于扫描输入文本的新的实用程序:当在Eclipse中编写Java程序时,如果变量是需要手动输入的时候,此时就可以用到scanner类. java中的scanner ...
最新文章
- VUE的本地应用-V- bind
- 科大讯飞公然吹捧“凌晨两点边工作边哄娃”的“奋斗文化”,引发网友极度不适!...
- 24.下拉列表的交互事件
- 读《程序员必读的职业规划书》
- 服务器客户端回射程序-自己设计包的结构
- lollipods耳机蓝牙连接方法
- 洛谷 P4551 最长异或路径
- 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。...
- 正则表达式是匹配模式,要么匹配字符,要么匹配位置
- (pytorch-深度学习)使用pytorch框架nn.RNN实现循环神经网络
- VMWare关闭beep声
- Chinalinuxpub.com初学版精华
- 大型网站技术架构(五)--网站高可用架构
- 【Appium实战】如何使用mumu模拟器模拟安卓手机
- sketch插件 android,用这个免费的Sketch插件,帮你完美还原安卓界面!
- 一周信创舆情观察(1.10~1.16)
- 软件工程导论复试——一、软件工程学概述
- 支付结算系统如何应对高并发、热点账户等问题
- android 蓝牙打印机(ESC/POS 热敏打印机),打印菜单小票和图片,对蓝牙配对和连接打印功能进行了封装,让你超快实现蓝牙打印功能
- bbs.php ww1.dzxa.me_bbs论坛小结
热门文章
- 反转链表—leetcode206
- linux中fork和exec
- C语言代码规范(编程规范)
- 电路知识--认识原理图(四)
- 第三章 PX4-Pixhawk-SPI底层驱动解析
- python怎么在官网下载pygame_Python中pip以及Pygame的下载与安装
- 数据结构课程设计(VS2012-c语言):算术表达式实现(加减乘除)
- [BUUCTF-pwn]——xman_2019_format
- I/O复用函数的使用——epoll
- java清除输出内容_java – 从JSch中的命令输出中删除shell东西...