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+正则的组合可以简化很多字符串的处理,而无需使用大量的代码分割字符串和数值转换。**

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ajax处理跨域_django跨域解决方案

    ajax处理跨域_django跨域解决方案原文:Javascript跨域和Ajax跨域解决方案 摘要:跨域请求,顾名思义,就是一个站点中的资源去访问另外一个不同域名站点上的资源。这种情况很常见,比如说通过style标签加载外部样式表文件、通过img标签加载外部图片、通过script标签加载外部脚本文件、通过Webfont加载字体文件等等。默认情况下,脚本访问文档属性等数据采用的是同源策略(Sameorigi…

  • oracle导出建表sql_Oracle数据库语句汇总

    oracle导出建表sql_Oracle数据库语句汇总第一步:安装pl/sqlDeveloper(此程序Oracle必备软件,在此不再讨论)第二步:登录pl/sqlDeveloper                                           登录界面第三步在左侧菜单选择Tables第三步点开Tables后在要导出的表上右键-DBMS_MetaData-DDL即可导出创建表的DDL语句

  • bilibili【考研英语词汇】

    bilibili【考研英语词汇】1、abandonvt.离弃,遗弃,抛弃;放弃。放纵,放弃a-否定(前缀)band-布带on布带不在自己身上,放纵,放弃bandn.条,带;乐队;波段;v.绑扎一群人绑在一起:乐队,一群bandagen绷带v用绷带扎缚-age永恒的(后缀)band-~ban-(前缀)banner横幅,旗帜(商店的旗帜)在小带子上写的字:slogan…

  • Spirng使用Aspectj实现AOP

    Spirng使用Aspectj实现AOP

  • int与long long之间的转换

    int与long long之间的转换今天看了下c++primer,才知道假如a为longlong或者double类型,b为int类型,假如有表达式a>=b,则编译器会将b先转化为longlong或者double类型,也就是说会将窄类型自动转化为宽类型,这一步是自动转化的,没有必要在代码中再强制转化。但是有个特例,假如a=INT32_MIN,则-a会越界,其数值在我的平台上为-2147483648,如果要得到

  • 基于C语言的图书管理系统_c语言图书管理系统课程设计报告

    基于C语言的图书管理系统_c语言图书管理系统课程设计报告该系统包括以下功能:1、注册账号2、登录账号3、修改密码4、录入功能5、添加功能6、删除功能7、修改功能8、浏览功能9、查询密码10、排序功能

    2022年10月11日

发表回复

您的电子邮箱地址不会被公开。

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