Scanner类说明
使用Scanner类可以很方面地获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流、字符串中解析出基本类型值和字符串值。Scanner类提供了多个构造器,不同的构造器可接受文件、输入流、字符串作为数据源,用于从文件、输入流、字符串中解析数据。
Scanner类的常用方法
- hasNextXXX():是否还有下一个输入项,其中XXX可以是Int、Long等代表基本数据类型的字符串。如果需要判断是否包含下一个字符串,则可以省略XXX。
- nextXXX():获取下一个输入项。XXX的含义与前一个方法中XXX相同。
代码示例1
import java.util.Scanner; public class ScannerKeyBoardTest { /** * @param args */ public static void main(String[] args) { // System.in代表标准输入,就是键盘输入 Scanner sc = new Scanner(System.in); // 增加下面一行将只把回车作为分隔符 // sc.useDelimiter("\n"); // 判断是否还有下一个输入项 while(sc.hasNext()) { // 输出输入项 System.out.println("键盘输入的内容是:" + sc.next()); } } }
运行结果1
hello
键盘输入的内容是:hello
welcome
键盘输入的内容是:welcome
go
键盘输入的内容是:go
运行结果2
当去掉sc.useDelimiter("\n");的注释,运行结果如下:
line 1
键盘输入的内容是:line 1
line 2
键盘输入的内容是:line 2
line 3
键盘输入的内容是:line 3
代码示例2
import java.util.Scanner; public class ScannerLongTest { /** * @param args */ public static void main(String[] args) { // System.in代表标准输入,就是键盘输入 Scanner sc = new Scanner(System.in); // 判断是否还有下一个long型整数 while(sc.hasNextLong()) { // 输出输入项 System.out.println("键盘输入的内容是:" + sc.nextLong()); } } }
运行结果
12
键盘输入的内容是:12
34
键盘输入的内容是:34
56
键盘输入的内容是:56
代码说明
Scanner可以获取任何基本类型的输入项目。
代码示例3
import java.io.File; import java.util.Scanner; public class ScannerFileTest { public static void main(String[] args) throws Exception { // 将一个File对象作为Scanner的构造器参数,Scanner读取文件内容 Scanner sc = new Scanner(new File("ScannerFileTest.java")); System.out.println("ScannerFileTest.java文件内容如下:"); // 判断是否还有下一行 while(sc.hasNextLine()) { // 输出文件中的下一行 System.out.println(sc.nextLine()); } } }
运行结果
F:\java\workspace\first\bin>java ScannerFileTest
ScannerFileTest.java文件内容如下:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ScannerFileTest {
public static void main(String[] args) throws FileNotFoundException {
// 将一个File对象作为Scanner的构造器参数,Scanner读取文件内容
Scanner sc = new Scanner(new File("ScannerFileTest.java"));
System.out.println("ScannerFileTest.java文件内容如下:");
// 判断是否还有下一行
while(sc.hasNextLine())
{
// 输出文件中的下一行
System.out.println(sc.nextLine());
}
}
}
代码说明
此代码创建Scanner对象时传入一个File对象作为参数,这表明该程序会读取ScannerFileTest.java文件中的内容。此代码使用了hasNextLine和nextline两个方法读取文件内容。