1、简介
Scanner 类是Java 中一个用于读取用户输入的工具。它可以从多种输入源读取数据,例如标准输入流、文件或字符串。提供了一系列方法来实现不同数据类型的输入,比如整数、布尔、浮点数等。
Scanner 类中有两种比较重要的方法:
1、以 hasNext 开头的方法:用于检查输入源中是否还有下一个标记可用,常用的有:
hasNext():如果输入源中还有下一个标记(非空格字符),返回 true。
hasNextLine():如果输入源中还有下一行(非空行),返回 true。
hasNextInt():如果输入源中还有下一个整数,返回 true。
hasNextDouble():如果输入源中还有下一个浮点数,返回 true。
hasNextBoolean():如果输入源中还有下一个布尔值,返回 true。
2、以 next 开头的方法:用于从输入源中获取下一个标记并返回相应的数据类型,常用的有:
next():从输入源中获取并返回一个字符串,默认以空格为分隔符,以回车 Enter 为结束符,回车 Enter 后的内容则放入缓冲区。
nextLine():从输入源中获取并返回一行字符串(以换行符为分隔符)。
nextInt():从输入源中获取并返回一个整数。
nextDouble():从输入源中获取并返回一个浮点数。
nextBoolean():从输入源中获取并返回一个布尔值(“true” 或 “false”)。
nextLong():从输入源中获取一个长整型数。
next() 和 nextLine()在处理方式和使用场景方面有一些区别:
next() 方法:
读取的字符串不包含分隔符,如果输入中存在多个以空格分隔的单词,next() 方法只会返回第一个单词。
在读取之前会忽略输入中的前导空格。
nextLine() 方法:
从输入源中读取并返回一整行字符串,包括换行符 \n 在内。
它会读取输入源中的全部内容直到遇到换行符,或者输入结束。
nextLine() 方法返回的字符串可以包含空格和其他特殊字符。
2、使用举例:
从不同的输入源读取数据:
从标准输入流读取数据
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数:");
int number = sc.nextInt(); // 从标准输入流读取整数
System.out.println("你输入的整数是:" + number);
sc.close();
创建了一个对象sc ,并将标准输入流(System.in)作为输入源。然后我们使用 nextInt() 方法从标准输入流读取一个整数。
从文件读取数据
wenjian{
Scanner sc= new Scanner(new File("input.txt"));// 创建对象sc,文件作为输入源
while (sc.hasNextLine()) {
String line = sc.nextLine(); // 从文件读取一行数据
System.out.println(line);
}
sc.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
在这个示例中,创建了一个对象sc,并将文件 “input.txt” 作为输入源。然后使用 hasNextLine() 和 nextLine() 方法循环读取文件的每一行数据并打印出来。
从字符串读取数据
Scanner sc = new Scanner(input);//创建 Scanner 对象sc,使用字符串作为输入源
while (sc.hasNext()) {
if (sc.hasNextInt()) {
int number = sc.nextInt(); // 从字符串读取整数
System.out.println("整数:" + number);
} else {
String word = sc.next(); // 从字符串读取单词
System.out.println("单词:" + word);
}
}
sc.close();
创建了一个 Scanner 对象sc,并将字符串 “niehao 02” 作为输入源。然后使用 hasNext()、hasNextInt() 和 next() 方法循环读取字符串中的每个单词或整数,并打印出来。