Java中Scanner类的用法
Java5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。它是以前的StringTokenizer和Matcher类之间的某种结合。由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分。于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法。这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析。借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。
Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.
Scannerreader=newScanner(System.in);
然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型
next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()
上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.例如,拥护在键盘输入
12.34,hasNextFloat()的值是true,而hasNextInt()的值是false.NextLine()等待用户输入一个文
本行并且回车,该方法得到一个String类型的数据。
下面是一个实例:
importjava.util.*;
publicclassExample
{
publicstaticvoidmain(Stringargs[])
{
System.out.println("请输入若干个数,每输入一个数用回车确认");
System.out.println("最后输入一个非数字结束输入操作");
Scannerreader=newScanner(System.in);
doublesum=0;
intm=0;
while(reader.hasNextDouble())
{
doublex=reader.nextDouble();
m=m+1;
sum=sum+x;
}
System.out.printf("%d个数的和为%f\n",m,sum);
System.out.printf("%d个数的平均值是%f\n",m,sum/m);
}
}
运行结果:
C:\java>java
Example请输入若干个数,每输入一个数用回车确认最后输入一个非数字结束输入操作34.13445d3个数的和为113.1000003个数的平均值是37.700000
C:\java>另一个例子,读取并分析文本文件:hrinfo.txt,文本文件的内容如下:老赵,28,feb-01,true小竹,22,dec-03,false阿波,21,dec-03,false凯子,25,dec-03,true 程序:
importjava.util.Scanner;
importjava.io.File;
importjava.io.FileNotFoundException;
publicclassreadhuman{
privatestaticvoidreadfile(Stringfilename){
try{
Scannerscanner=newScanner(newFile(filename));
scanner.useDelimiter(System.getProperty("line.separator"));
while(scanner.hasNext()){
parseline(scanner.next());
}
scanner.close();
}catch(FileNotFoundExceptione){
System.out.println(e);
}
}
privatestaticvoidparseline(Stringline){
Scannerlinescanner=newScanner(line);
linescanner.www.gzlij.com useDelimiter(",");
//可以修改usedelimiter参数以读取不同分隔符分隔的内容
Stringname=linescanner.next();
intage=linescanner.nextInt();
Stringidate=linescanner.next();
booleaniscertified=linescanner.nextBoolean();
System.out.println("姓名:"+name+",年龄:"+age+",入司时间:"+idate+",验证标记:"+iscertified);
}
publicstaticvoidmain(String[]args){
if(args.length!=1){
System.err.println("usage:javareadhumanfilelocation");
System.exit(0);
}
readfile(args);
}
}
运行结果:C:\java>javareadhumanhrinfo.txt姓名:老赵,年龄:28,入司时间:feb-01,验证标记:true姓名:小竹,年龄:22,入司时间:dec-03,验证标记:false姓名:阿波,年龄:21,入司时间:dec-03,验证标记:false姓名:凯子,年龄:25,入司时间:dec-03,验证标记:true
版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/life/19197.html