了解Java中的Scanner函数
Scanner是Java中一个方便的操作输入流的类,可以通过Scanner读取从控制台输入的内容或者文件中的内容。Scanner可以根据指定的格式,以各种数据类型(例如int,double,字符串等)读取输入。Scanner还提供了一些其他的方法,可以进行基本的表达式扫描和文本分析。
Scanner类可以用来读取控制台输入、文件以及其他可读数据源中的数据。它的构造函数支持任何实现了Readable接口的对象作为参数,因此它可以方便地读取从各种数据源提供的数据。下面是在Java中使用Scanner类基本操作的详细说明。
1. 创建Scanner对象
可以通过以下代码创建Scanner对象:
Scanner scanner = new Scanner(System.in);
在这里,Scanner使用System.in作为读取输入的数据源,它表示从控制台读取输入的数据。
可以使用文件作为数据源创建Scanner对象:
Scanner scanner = new Scanner(new File("test.txt"));
这里的数据源是文件(test.txt),Scanner将读取该文件中的文本并将其作为输入提供给程序。
2. 读取不同类型的输入数据
下面是一些Scanner读取不同类型数据的示例。请注意,Scanner类提供了各种类型的next()方法,如nextLine()、nextInt()、nextDouble()等,可以根据输入数据的类型来选择使用适当的方法。
(1)读取字符串:
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your name:");
String name = scanner.nextLine(); // 读取一行输入并存储为字符串
System.out.println("Your name is " + name);
(2)读取整数:
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your age:");
int age = scanner.nextInt(); // 读取整数
System.out.println("Your age is " + age);
(3)读取浮点数:
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the value of PI:");
double pi = scanner.nextDouble(); // 读取浮点数
System.out.println("The value of PI is " + pi);
3. 表达式扫描和文本分析
Scanner除了能够读取基本数据类型,还有一些方法可用于文本分析和表达式扫描。Scanner提供了hasNext()、hasNextInt()、hasNextDouble()等方法,用于检查Scanner输入中是否存在下一个元素。此外,Scanner还提供了findInLine()、skip()和useDelimiter()等方法来执行更高级的文本分析操作。
(1)查找输入内容中的所有整数
Scanner scanner = new Scanner(System.in);
System.out.println("Enter some integers:");
while (scanner.hasNextInt()) {
int num = scanner.nextInt();
System.out.println("Found integer: " + num);
}
这个例子使用Scanner的hasNextInt()方法来检查输入的内容是否包含一个或多个整数值。
(2)使用正则表达式查询输入内容中的单词
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter("\\W");
System.out.println("Enter some text:");
while (scanner.hasNext()) {
String word = scanner.next();
System.out.println(word);
}
这个例子使用Scanner的useDelimiter()方法,将非单词类字符(例如空格或逗号)作为分隔符,以从输入中获取单词。使用hasNext()和next()方法循环读取输入数据,并使用正则表达式来获取输入数据中的单词。
(3)跳过一些输入内容
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your age:");
int age = scanner.nextInt();
scanner.skip(" "); // 跳过一个空格
System.out.println("Enter your name:");
String name = scanner.nextLine();
System.out.println("Your name is " + name + ", age is " + age);
这个例子使用Scanner的skip()方法来跳过输入中的一个空格。这对于混合输入数据类型的情况非常有用。在这个例子中,先读取一个整数,然后跳过一个空格,并读取一行输入作为字符串。
总结
Scanner是Java中一个非常有用的类,可以轻松地读取各种输入数据类型。Scanner类不仅适用于读取控制台输入,还常用于读取文件和其他可读数据源中的数据。尽管它主要用于读取基本数据类型,但其高级文本分析功能使其具有更广泛的应用场景。Scanner的使用使代码简洁而灵活,避免了繁琐的输入操作。
