当前位置: 首页 > article >正文

java Scanner

在 Java 中,Scanner 是一个用于从输入流中读取数据的类,常用于从控制台读取用户输入。它位于 java.util 包中,并提供了多种读取不同类型数据的方法。以下是 Scanner 类中最常用的几个方法以及它们的详细说明。

1. 创建 Scanner 对象

首先,要使用 Scanner,你需要创建一个 Scanner 对象。通常用于从标准输入流(控制台)读取数据:

Scanner scanner = new Scanner(System.in);

System.in 表示从控制台读取输入。


2. 常用方法

1. next()
  • 功能:读取下一个完整的单词(以空格为分隔符)。
  • 返回类型String
  • 示例
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个单词:");
String word = scanner.next();
System.out.println("您输入的单词是: " + word);

如果输入的是 "Hello World",则 next() 只会读取到 "Hello"。

2. nextLine()
  • 功能:读取整行输入,包括空格。
  • 返回类型String
  • 示例
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一行文字:");
String line = scanner.nextLine();
System.out.println("您输入的内容是: " + line);

如果输入的是 "Hello World",nextLine() 会读取整个 "Hello World"。

3. nextInt()
  • 功能:读取下一个整数。
  • 返回类型int
  • 示例
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = scanner.nextInt();
System.out.println("您输入的整数是: " + num);

如果输入的是 42,则 nextInt() 会返回 42

注意:如果输入的不是有效的整数类型,nextInt() 会抛出 InputMismatchException

4. nextDouble()
  • 功能:读取下一个双精度浮点数。
  • 返回类型double
  • 示例
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个浮点数:");
double value = scanner.nextDouble();
System.out.println("您输入的浮点数是: " + value);

输入 3.14 会返回 3.14

5. nextBoolean()
  • 功能:读取下一个布尔值。
  • 返回类型boolean
  • 示例
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个布尔值 (true/false):");
boolean flag = scanner.nextBoolean();
System.out.println("您输入的布尔值是: " + flag);

输入 truefalse 会返回相应的布尔值。

6. hasNext()
  • 功能:检查是否还有下一个输入项。
  • 返回类型boolean
  • 示例
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一段文本:");
while (scanner.hasNext()) {
    String word = scanner.next();
    System.out.println("您输入的单词是: " + word);
}

这个方法会持续读取直到输入结束。

7. hasNextLine()
  • 功能:检查是否还有下一行输入。
  • 返回类型boolean
  • 示例
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一些文本:");
while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    System.out.println("您输入的行是: " + line);
}
8. close()
  • 功能:关闭 Scanner 对象,释放资源。这个方法应该在不再需要读取输入时调用。
  • 示例
Scanner scanner = new Scanner(System.in);
// 做一些读取操作
scanner.close();  // 关闭 scanner

3. 使用 Scanner 时的注意事项

  • 输入错误处理:如果用户输入的数据类型不匹配(例如,输入一个字母而程序期望一个整数),Scanner 会抛出 InputMismatchException。可以通过 try-catch 语句来处理异常。
Scanner scanner = new Scanner(System.in);
try {
    System.out.println("请输入一个整数:");
    int num = scanner.nextInt();
    System.out.println("您输入的整数是: " + num);
} catch (InputMismatchException e) {
    System.out.println("输入错误,请输入一个有效的整数。");
}
  • nextLine() 和其他方法的关系:当你使用 nextInt()nextDouble() 等方法时,它们会读取输入的部分数据,但会留下一个换行符(即回车符)在输入缓冲区。这可能导致随后的 nextLine() 调用读取到空行。解决这个问题的一个常见方法是在使用 nextInt()nextDouble() 后再调用一次 nextLine() 来消费掉这个换行符。
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = scanner.nextInt();
scanner.nextLine(); // 消耗掉剩余的换行符
System.out.println("请输入一行文字:");
String line = scanner.nextLine();

4. 总结

Scanner 是一个非常强大的工具,适合用来处理用户输入和从文件中读取数据。通过使用 next()nextLine()nextInt()nextDouble() 等方法,你可以根据不同的需求读取不同类型的数据。记住在使用完 Scanner 后调用 close() 关闭它,以释放资源。


http://www.kler.cn/a/409179.html

相关文章:

  • udp_socket
  • 【贪心算法第二弹——2208.将数组和减半的最小操作数】
  • #Uniapp篇:变量v-if 和 v-show 区别.sync 修饰符宽屏适配指南Pinia内置了
  • Vite基本概要
  • 安装 Docker(使用国内源)
  • 拥塞控制算法的 Utility-Function
  • 【PHP】 环境以及插件的配置,自学笔记(一)
  • 【Ubuntu24.04】服务部署(虚拟机)
  • 微信万能门店小程序系统存在任意文件读取漏洞
  • 中标麒麟部署k8sV1.31版本详细步骤
  • 5.最长回文子串 python
  • Diffusion 和Stable Diffusion的数学和工作原理详细解释
  • 【君正T31开发记录】8.了解rtsp协议及设计模式
  • golang学习6-指针
  • 探索智能时代:从AI生成PPT到自动化未来
  • 【Elasticsearch入门到落地】2、正向索引和倒排索引
  • C++自动化测试:GTest 与 GitLab CI/CD 的完美融合
  • 如何做鸿蒙系统里的App开发需要哪些技术栈
  • Node.js 安装与环境配置详解:从入门到实战
  • 数据结构(顺序队列——c语言实现)
  • pytorch torch.sign() 方法介绍
  • CTF之密码学(培根密码)
  • SpringBoot集成多个rabbitmq
  • 安宝特方案 | AR助力紧急救援,科技守卫生命每一刻!
  • C++结构型设计模式之桥接模式
  • C# 数据结构之【树】C#树