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)
上一篇 2022年7月8日 下午2:46
下一篇 2022年7月8日 下午2:46


相关推荐

  • OpenClaw创始人隔空喊话百度:希望联合开发龙虾!

    OpenClaw创始人隔空喊话百度:希望联合开发龙虾!

    2026年3月14日
    2
  • linux环境安装mariadb,linux环境下安装Mariadb

    linux环境安装mariadb,linux环境下安装Mariadb一、下载安装mariadb是属于mysql的一个分支,是其创始人在mysql被卖给oracle之后重新分出来的,maria取自于他女儿的名字。mariadb完全兼容于mysql,在很多新版本的linux系统中,mysql都已经被替换成了mariadb。mariadb的官网:mariadb官网,下载地址:下载地址。最新稳定版本的下载直链为:wgethttps://downloads.mariadb…

    2022年6月8日
    209
  • 正版office2007标准版

    正版office2007标准版正版office2007标准版正版office2007标准版,供应2007office标准版,正版office2007询价,正版office2007价格 胡辉:13590176235深圳office2007 中文家庭与学生版彩包:深圳office200

    2022年7月19日
    20
  • 微信沙雕功能“炸屎”上线!网友:满屏的粑粑真可爱

    微信沙雕功能“炸屎”上线!网友:满屏的粑粑真可爱点击上方 码农突围 马上关注这里是码农充电第一站 回复 666 获取一份专属大礼包真爱 请设置 星标 或点个 在看在微信的 8 0 版本里 表情就已经会动了 狗头 表情耳朵会动一动

    2026年3月18日
    2
  • Cisco Packet Tracer中配置静态路由与缺省路由(默认路由)

    Cisco Packet Tracer中配置静态路由与缺省路由(默认路由)静态路由介绍 静态路由是指由用户或网络管理员手工配置的路由信息 当网络的拓扑结构或链路的状态发生变化时 网络管理员需要手工去修改路由表中相关的静态路由信息 静态路由信息在缺省情况下是私有的 不会传递给其他的路由器 当然 网管员也可以通过对路由器进行设置使之成为共享的 静态路由一般适用于比较简单的网络环境 在这样的环境中 网络管理员易于清楚地了解网络的拓扑结构 便于设置正确的路由信息 格式

    2026年3月18日
    2
  • MIPI协议知识

    MIPI协议知识转发路径:https://blog.csdn.net/weixin_41842559/article/details/109828013?spm=1001.2101.3001.6650.14&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-14.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_

    2022年6月2日
    39

发表回复

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

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