Java中的Scanner
类
是一个用于解析基本类型和字符串的文本扫描器。它位于java.util
包中,通常用于从键盘、文件、网络资源等输入流中读取数据。以下是Scanner
类的详细说明:
基本用法
-
使用类,必须创建类的实例(对象)
-
用类的对象来调用类中的方法就达到了使用类的目的
-
导入类库:
java
import java.util.Scanner;
-
创建Scanner对象:
java
Scanner scanner = new Scanner(System.in); // 从标准输入(键盘)读取数据 Scanner scanner = new Scanner(new File("path/to/file.txt")); // 从文件中读取数据 Scanner scanner = new Scanner("some string"); // 从字符串中读取数据
-
读取数据:
Scanner
类提供了多种方法用于读取不同类型的数据:next()
: 读取下一个字符串(以空白符作为分隔符)。nextInt()
: 读取下一个整数。nextDouble()
: 读取下一个双精度浮点数。nextLine()
: 读取下一行文本(以换行符作为分隔符)。hasNext()
: 检查输入中是否还有至少一个由next()
方法返回的单词。hasNextInt()
,hasNextDouble()
,hasNextLine()
: 类似,但用于检查下一个输入项是否是相应的类型。
示例
以下是一个简单的示例,演示如何从键盘读取整数和字符串:
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter an integer: ");
int number = scanner.nextInt(); // 读取整数
System.out.print("Enter your name: ");
String name = scanner.nextLine(); // 读取字符串
// 输出读取的数据
System.out.println("You entered the integer: " + number);
System.out.println("Your name is: " + name);
scanner.close(); // 关闭scanner对象
}
}
控制台输入-验证案例
使用Scanner小案例
import java.util.Scanner; //导入包
public class TestScanner{
public static void main(String [] args){
Scanner scanner = new Scanner(System.in);
//一般情况都会在接收用户输入前打印提示语句
System.out.println("请输入您的账号:");
String name = scanner.next(); //接收一个字符串
System.out.println("请输入您的密码:");
int password = scanner.nextInt();
if(name.equals("admin") && password == 1234){
System.out.println("恭喜您!登陆成功!");
}
}
}
注意:
- equals(方法,是字符串比较是否相等的方法
- 在字符串变量之间使用==是比较两个字符串对象的地址值
注意事项
next()
和nextInt()
等方法的调用可能会导致Scanner
对象留在输入流的开头(在空白符之后),这意味着后续调用nextLine()
可能会跳过一行,因为它从nextInt()
之后的空白符开始读取。- 当使用
nextLine()
方法时,如果之前使用了nextInt()
或next()
,则需要先通过nextLine()
读取空白行(即,通过调用scanner.nextLine()
但不使用其返回值)。 - 在完成数据读取后,最好关闭
Scanner
对象以释放相关资源,使用scanner.close()
方法。
Scanner
类是处理输入数据时非常有用的工具,尤其是在需要从用户或文件中读取数据时。