java中scanner意思_Java中的Scanner

java中scanner意思_Java中的ScannerScanner对象是一个简单的文本扫描仪,**可以使用正则解析文本字符串**。我们使用Scanner最多的地方可能就是读取键盘输入,但是Scanner的功能远比此强大。对于Scanner的进一步理解还是在LeetCode的一道算法题上,题目大意是输入一组分式加法构成的字符串,要求输出分式相加的结果。首先是输入”-2/3+2/3-4/5″,接着求其和。首先第一步需要解析字符串为所需的数据,我使用了s…

大家好,又见面了,我是你们的朋友全栈君。

Scanner对象是一个简单的文本扫描仪,**可以使用正则解析文本字符串**。我们使用Scanner最多的地方可能就是读取键盘输入,但是Scanner的功能远比此强大。对于Scanner的进一步理解还是在LeetCode的一道算法题上,题目大意是输入一组分式加法构成的字符串,要求输出分式相加的结果。首先是输入”-2/3+2/3-4/5″,接着求其和。首先第一步需要解析字符串为所需的数据,我使用了split()的方式,有位大哥就使用了`scanner.useDelimiter(pattern)`方法,直接将数据解析到了Scaner对象中。

# Scanner的工作方式

Scanner的分隔符模式将输入分割到令牌(token,就是临时存储区域),默认情况下以**空格**分割。然后可以使用各种next方法将得到的令牌转换成不同类型的值。这种工作模式类似于String的split()方法,但Scanner更加强大。

# Scanner的应用

## 读取输入流

最常使用的是让Scanner扫描输入流。

“`

Scanner scan = new Scanner(System.in);

if (scan.hasNextLine()) {

String str = scan.nextLine();

}

scan.close();

“`

Scanner将读取输入流,并可以使用一系列的next()方法将输入流字符转化为不同类型的数值。

## 读取文件

“`

Scanner scan = null;

try {

scan = new Scanner( new File(“bin/org/xli/scanner_string/number.txt”));

while (scan.hasNext()) {

System.out.println(scan.nextDouble());

}

} catch (FileNotFoundException e) {

}

scan.close();

“`

>3.1

3.14

3.141

文件读取也是以空白分割(空格、回车、制表符都可)。

## 读取字符串

“`

Scanner scan = new Scanner(“3.1 3.14 3.141”);

while (scan.hasNextDouble()) {

System.out.println(scan.nextDouble());

}

scan.close();

“`

>3.1

3.14

3.141

## useDelimiter(pattern)方法

该方法将此扫描仪的划分模式设置为从指定的`pattern的模式`,并返回一个新的Scanner对象。

“`

String str = “1/2+1/3-1/2”;

Scanner scanner = new Scanner(str);

Scanner scan = scanner.useDelimiter(“/|\\+|(?=-)”);

while (scan.hasNextInt()) {

System.out.println(scan.nextInt());

}

scan.close();

scanner.close();

“`

>1

2

1

3

-1

2

上述代码使用`/`或`+`或`-`之前的””作为分隔符,将输入串分割为纯粹的数字,简化处理。File和InputStream类似。

**总结:使用Scanner+正则的组合可以简化很多字符串的处理,而无需使用大量的代码分割字符串和数值转换。**

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156920.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据绑定中的一个问题”pages enableEventValidation=”true””[通俗易懂]

    数据绑定中的一个问题”pages enableEventValidation=”true””[通俗易懂]我们在用vs2005做数据绑定的时候运行出来的回发或回调参数无效。在配置中使用<pagesenableEventValidation=”true”/>或在页面中使用<%@PageEnableEventValidation=”true”%>启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据…

    2022年7月14日
    37
  • ffmpeg安装_vmware虚拟化集群教程

    ffmpeg安装_vmware虚拟化集群教程搭建ffmeg环境描述部署资源安装包安装步骤1.yasm安装2.ffmpeg安装后续描述1.结合网上文档以及本地虚拟机环境配置一致的测试服务器进行环境搭建,在测试的时候,强烈建议环境适用的操作系统内核与本文档保持一致,因为ffmpeg会存在内核要求,可能会由于兼容性问题导致安装不成功2.服务器操作系统以及内核为2.6.32-431.el6.x86_642013x86_64x86_64x86_64GNU/Linux,这是属于红帽的系统,系统一些必须的环境还是需要提前配置好,如JDK\MAVEN

    2022年9月25日
    4
  • redis的分布式解决方式–codis

    redis的分布式解决方式–codis

    2022年1月27日
    42
  • win10下安装Ubuntu16.04双系统「建议收藏」

    win10下安装Ubuntu16.04双系统「建议收藏」win10下安装Ubuntu16.04双系统最近由于想体验一下Ubuntu系统,由于虚拟机的体验不是很好,所以便在电脑上试下装双系统。自己也是一步步按着网上的帖子来,由于网上的教程都不是最新的而且有的也不是很全面,导致安装过程中踩坑无数,便想着自己写个新一点全面一点的教程。此教程应该可以解决新手安装过程中遇到的一切基本问题,嘿嘿。

    2022年7月24日
    12
  • 解决Windows update medic service服务禁用不了拒绝访问

    解决Windows update medic service服务禁用不了拒绝访问1、首先使用Win+R组合快捷键,打开运行对话框,然后输入命令regedit,点击下方的“确定”打开服务,如下图所示。2、在注册表设置中,找到并定位到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc”右侧找到“Start”键,右键点击“修改”,将数值改为“4”3、再找到“FailureAct…

    2022年5月4日
    197
  • 为什么要用 Bootstrap

    [Bootstrap](http://hovertree.com/menu/bootstrap/)是由两个twitter员工开发并开源的前端框架,非常火爆,而如此火爆自然有它的道理,在我们团队的

    2021年12月26日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号