方法1:Scanner类
Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。它是以前的StringTokenizer和Matcher类之间的某种结合。由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分。于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法。这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析。借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。
类加载import java.util.Scanner;
用给定的输入流创建一个Scanner对象:Scanner in = new Scanner(InputStream in);
Scanner类的构造器
可以从字符串(Readable)、输入流、文件等等来直接构建Scanner对象,有了Scanner了,就可以逐段(根据正则分隔式)来扫描整个文本,并对扫描后的结果做想要的处理。
Scanner类中的方法Scanner in = new Scanner(System.in);
//检测输入中是否还有其他单词
boolean bn = in.hasNext();
boolean bnl = in.hasNextLine();
boolean bni = in.hasNextInt();
boolean bnd = in.hasNextDouble();
//输入一行(包含空格)
String str = in.nextLine();
//读取一个单词(以空白符作为分隔符),只读空格之前的数据,并且cursor指向本行
//从遇见的第一个有效字符(非空格,非换行符)开始扫描,
//当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。
String firstName = in.next();
//读取一个整数,只读取数值,剩下”\n”还没有读取,并将cursor放在本行中
int age = in.nextInt();
//读取一个浮点数
double num = in.nextDouble()
上述方法执行时都会造成堵塞,等待用户在命令行输