这篇文章主要讲解了“Java中扫描仪类的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中扫描仪类的用法”吧!
一、扫描仪类简介
,,,Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。它是以前的StringTokenizer和匹配器类之间的某种结合,由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分。于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法。这样,除了能使用正则表达式之外,扫描仪类还可以任意地对字符串和基本类型(如int和double)的数据进行分析。借助于扫描仪,可以针对任何要处理的文本内容编写自定义的语法分析器。
二,扫描仪类用法
,,,扫描仪是SDK1.5新增的一个类,可使用该类创建一个对象。
,,,Scanner 读者=new 扫描仪(系统);
,,,然后读者对象调用下列方法(函数),读取用户在命令行输入的各种数据类型
,,,nextDouble next.Byte () ()、nextFloat nextInt (), nextLine (), nextLong (), nextShot ()
,,,上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认,例如,拥护在键盘输入12.34,hasNextFloat()的值是正确的,而hasNextInt()的值是false.NextLine()等待用户输入一个文本行并且回车,该方法得到一个字符串类型的数据。
,,,扫描仪的构造器支持多种方式,可以从字符串(<强>读强>),输入流,文件等等来直接构建扫描仪对象,有了扫描了,就可以逐段(根据正则分隔式)来扫描整个文本,并对扫描后的结果做想要的处理。
,,,下面是一些API函数的用法:
,,,分隔符():返回此扫描器当前正在用于匹配分隔符的模式。
hasNext():判断扫描器中当前扫描位置后是否还存在下一段。(原APIDoc的注释很扯淡)
hasNextLine():如果在此扫描器的输入中存在另一行,则返回真的。
next():查找并返回来自此扫描器的下一个完整标记。
nextLine():此扫描器执行当前行,并返回跳过的输入信息。
三,扫描仪类实例
(1)
import java.util。*; public class 例子 { public static  void 主要(String 参数[]) { System.out.println(“请输入若干个数,每输入一个数用回车确认“); System.out.println(“最后输入一个非数字结束输入操作“); Scanner 读者=new 扫描仪(系统); double 金额=0; int m=0; 而(reader.hasNextDouble ()) { ,,,double x=reader.nextDouble (); ,,,m=m + 1; ,,,=和+ x总和; } System.out.printf (“% d个数的和为% f \ n", m,总和); System.out.printf (“% d个数的平均值是% f \ n", m,总和/m); } }
?,,?才能运行结果:
,,,C: \ java> java ,,,,
,,,请输入若干个数,每输入一个数用回车确认
,,,最后输入一个非数字结束输入操作
,,,
34.13445,,,三个数的和为113.100000
,,,三个数的平均值是37.700000
(2)读取并分析文本文件:hrinfo。txt
import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; public class  readhuman { private static  void readfile (String 文件名),{ try { ,,Scanner Scanner =, new 扫描仪(new 文件(文件名)); ,,scanner.useDelimiter (System.getProperty (“line.separator")); ,,while (scanner.hasNext ()), { ,,,,,parseline (scanner.next ()); ,,} ,,scanner.close (); }catch (FileNotFoundException e), { ,,System.out.println (e); } } private static  void parseline (String 线),{ ,,,Scanner linescanner =, new 扫描仪(线); ,,,linescanner.www.gzlij.com useDelimiter (“”); ,,,//可以修改usedelimiter参数以读取不同分隔符分隔的内容 ,,,String name =, linescanner.next (); ,,,int age =, linescanner.nextInt (); ,,,String idate =, linescanner.next (); ,,,boolean iscertified =, linescanner.nextBoolean (); ,,,System.out.println(“姓名:“+名称+“,,年龄:“+,年龄+“,,入司时间:“+,idate +“,,验证标记:“+ iscertified ); } public static  void main (String [], args), { ,,,if (args.length !=, 1), { ,,System.err.println(“用法:,java readhuman file location"); ,,system . exit (0); ,,,} ,,readfile (args [0]); } }Java中扫描仪类的用法