java scanner语句,java中使用scanner,在Java中Scanner的用法总结

java scanner语句,java中使用scanner,在Java中Scanner的用法总结

本文主要介绍Java中Scanner的使用总结,有很好的参考价值,希望对大家有所帮助。如有错误或不足之处,请不吝赐教。

最近在做OJ题的时候,经常因为扫描器的使用造成一些细节问题,导致程序失败(最差的是网易笔试,AC代码因为死循环没有找到sc所以过不去。),所以扫描器总结了一下。

Scanner类简介

Java增加了java.util.Scanner类,这是一个新的用于扫描输入文本的实用程序。

它是前面的StringTokenizer和Matcher类的组合。因为任何数据都必须通过相同模式的捕获组来检索,或者通过使用索引来检索文本的各个部分。

因此,正则表达式可以与从输入流中检索特定类型数据项的方法相结合。这样,除了正则表达式,Scanner类还可以任意分析基本类型(比如int和double)的字符串和数据。

在Scanner的帮助下,您可以为任何要处理的文本内容编写自定义解析器。

关于nextInt()、next()和nextLine()的理解

Nextt():它只读取int值,nextint()在读取输入后将光标放在同一行。(Nexttint()只读取值,剩余的' \n '未被读取,并将光标放在这一行)

Next():只读取输入直到空格。它不能读由空格隔开的两个单词。同样,next()在读取输入后将光标放在同一行。(Next()只读取空格前的数据,光标指向这一行)

当next()方法遇到第一个有效字符(非空格、非换行符)时,它开始扫描。当遇到第一个分隔符或终止符(空格或换行符)时,结束扫描,获取扫描的内容,即第一个扫描的不带空格或换行符的单个字符串。

nextLine():读取输入,包括单词之间的空格(也就是说,一直读到行尾)。一旦输入被读取,nextLine()将光标定位在下一行。

NextLine(),你可以扫描一行并以字符串的形式获取它。

公共类NextTest{

公共静态void main(String[] args) {

字符串s1、S2;

Scanner sc=新扫描仪(system . in);

System.out.print('请输入第一个字符串:');

S1=sc . nextline();

System.out.print('请输入第二个字符串:');

S2=sc . next();

System.out.println('输入字符串为:' S1 ' ' S2 ');

}

}

结果:

请输入第一个字符串:home

请输入第二个字符串:工作

输入字符串是:家庭作业

修改上面的程序:

S1=sc . next();

S2=sc . nextline();

运行结果:

请输入第一个字符串:home

请输入第二个字符串:输入的字符串是:home。

如您所见,nextLine()自动读取由next()移除的Enter作为其终止符,因此没有办法从键盘为s2输入值。

经过验证,我发现其他的next方法,比如double nextDouble()、float nextFloat()、int nextInt(),在和nextLine()一起使用的时候都有这个问题。解决方法是在每个语句后添加一个nextLine(),如next()、nextDouble()、nextFloat()和nextInt()。

公共类NextTest{

公共静态void main(String[] args) {

字符串s1、S2;

Scanner sc=新扫描仪(system . in);

System.out.print('请输入第一个字符串:');

S1=sc . next();

sc . nextline();

System.out.print('请输入第二个字符串:');

S2=sc . nextline();

System.out.println('输入字符串为:' S1 ' ' S2 ');

}

}

运行结果:

请输入第一个字符串:home

请输入第二个字符串:工作

输入字符串是:家庭作业

循环输入多组测试用例

一段时间是一个测试用例。

公共静态void main(String[] args){

Scanner in=新扫描仪(system . in);

//一个在…期间就是一个测试用例

while(in.hasNext()){

int n=in。nextint();//该测试用例后续接收的参数个数

long[]array=new long[n];

String[] arrayStr=新字符串[n];

for(int I=0;在;i ){

数组string[I]=in。next();

}

for(int I=0;在;i ){

array[I]=in。next long();//取下一个元素转换成长的类型

}

系统。出去。println(数组。tostring(array)“”数组。tostring(array str));

}

}

一个与容器结合的综合例子:

导入Java。util。扫描仪;

公共类主要{

公共静态void main(String[] args) {

扫描仪输入=新扫描仪(系统。在);

while (in.hasNext()) {

int n=in。nextint();

/* nextLine()是扫描器执行当前行,并返回跳过的输入信息,特别需要注意!

如果没有该行,则执行第一个in.nextLine()命令时的返回值是int n=in.nextInt()的值*/

英寸next line();

HashSetString set=new HashSetString();

for(int I=0;I n;i ) {

字符串行=

英寸next line();

string[]arr=line。拆分(“”);

for(int j=0;j排列长度;j ) {

设置。add(arr[j]);

}

}

系统。出去。println(' sum:' set。size());

}

}

输入:

3

公元前

欧洲发展基金

公元前

输出:

6

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: