java.util.Scanner是Java5的新特性,主要功能是简化文本扫描。
常用构造方法:
Scanner(File source)
Scanner(InputStream source)
Scanner(String source)
对比两种方式的比较:
Scanner sc=new Scanner(System.in)
BufferedReader br=new BufferedReader(new InputStreamReader(System.in))
常用方法:
useDelimiter(Pattern pattern)
useDelimiter(String pattern)
hasNext();查看是否有token的分割段
hasNextInt();查看是否有int类型的token分割段
nextInt();返回下一个int的数值
nextLine();返回一行
hasNext(Pattern pattern);返回下一个pattern类型的token
应用实例
1.控制台输入
public class ScannerTest {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入字符串:");
while (true) {
String line = s.nextLine(); //也可以获取输入的基本类型,int i=s.nextInt();
if (line.equals("exit")) break;
System.out.println(">>>" + line);
}
}
}
2.Scanner的构造器支持多种方式,可以从字符串(Readable),输入流(System.in),w文件等直接构造Scanner对象。Scanner默认使用空格作为分隔符。
例如逐行扫描整个文本:
public static void main(String[] args)
{
Scanner s=new Scanner("123 456 789 abc");
while(s.hasNext()){
System.out.println(s.next()); //可以采用s.useDelimiter(" |,|\\."); 来重新定义分隔符
}
}
输出为:
123
456
789
abc
逐行扫描文件并输出:
public static void main(String[] args) throws FileNotFoundException
{
InputStream in = new FileInputStream(new File("E:\\Test.java"));
Scanner s = new Scanner(in);
while(s.hasNextLine()){
System.out.println(s.nextLine());
}
}
}
输出:
import java.util.*;
public class Test{
public static void main(String[] args)
{
Scanner s=new Scanner("123 456 789 abc");
while(s.hasNext()){
System.out.println(s.next());
}
}
}