【Java】标准输入之 Scanner 对象的应用指南

一、前言

现在,我们来了解一下 Scanner。

在Java中,我们可以通过使用Scanner类从键盘获取不同类型的变量。Scanner类提供了方便的方法来读取用户输入的数据,我们可以将这些数据存储在适当的变量中。


二、内容

2.1 什么是 Scanner ?

Java Scanner 是 Java Utilities 包中的一个类,它的作用是创建软件与用户之间的双向通信。也就是说,它提供了一种让用户输入信息,以便软件可以利用信息来调整其行为的方式。

几乎所有的软件都需要一定程度的用户交互,因此它需要一种捕获数据的方式,Scanner 类就是做这一点。使用 Scanner 类可以使数据交互过程变得很简单。

在使用 Scanner 类之前,我们需要导包,即导入java.util.Scanner类,语句如下:

java 复制代码
import java.util.Scanner;

一旦导入了 Scanner 类,我们就可以在代码中使用它。


2.2 实例化 Scanner

使用 Scanner 类的第一步当然是实例化Scanner对象,通常使用 System.in 作为输入流。这是获取用户输入的一种标准方法。

实例化Scanner 对象的语句如下:

java 复制代码
Scanner scan = new Scanner(System.in);

一旦我们实例化了 Scanner 对象,就可以使用各种 next 方法来获取不同数据类型的输入,如 nextLine()nextInt()nextDouble() 等,具体取决于要获取的数据类型。


2.3 基本的 Scanner 方法

根据我们所需的变量类型,我们可以使用Scanner的不同方法来获取输入的值。

Scanner 类会将输入字符串分割成一个个 "切割单元"(token),默认情况下使用空白或制表符作为分隔符。这使得解析和获取用户输入的各个部分变得非常方便。

next()

next() 方法用于获取下一个 token,并返回一个字符串。

比如:

java 复制代码
System.out.println("请输入文本:");
Scanner scanner = new Scanner(System.in);
String token = scanner.next();
System.out.println(token);

运行结果:

bash 复制代码
请输入文本:
Hello World!
Hello

nextInt()、nextDouble()、nextBoolean()

Scanner 还提供了一系列方法,用于读取不同数据类型的 token,例如整数、浮点数、布尔值等。这些方法将 token 转换为相应的数据类型并返回。

比如:

如果我们需要读取一个整数,可以使用nextInt()方法。

java 复制代码
System.out.println("请输入你的年龄:");
int age = scan.nextInt();
System.out.println("你的年龄是:" + age);

类似地,要读取一个浮点数,我们可以使用nextDouble()方法。

java 复制代码
System.out.println("请输入你的体重:");
double weight = scan.nextDouble();
System.out.println("你的体重是:" + weight);

如果需要读取布尔类型的值(即truefalse),可以使用nextBoolean()方法。

java 复制代码
System.out.println("你热爱学习嘛?(true/false)");
boolean isLove = scan.nextBoolean();
System.out.println("你的答案是:?" + isLove);

nextLine()

nextLine() 方法用于读取整行文本,包括换行符。这通常用于获取用户输入的一整行。例如:

java 复制代码
Scanner scanner = new Scanner("Hello, World!\nHow are you?");
String line = scanner.nextLine();
System.out.println(line); // 输出 "Hello, World!"

2.4 异常处理

在处理用户输入时,要格外小心,因为用户可以输入不合法的数据。Scanner 类提供了一些异常处理方法,例如 hasNextInt(), hasNextDouble(), hasNextLine() 等,这些方法允许你在读取之前检查是否有合法的输入。

hasNext() 系列方法用于回传boolean值,表示接下来还有没有东西

比如:

java 复制代码
Scanner scanner = new Scanner(System.in);
if (scanner.hasNextInt()) {
    int number = scanner.nextInt();
    System.out.println("你输入的整数是:" + number);
} else {
    System.out.println("无效的整数输入");
}

小结

  • 使用hasNextInt()hasNextDouble()方法来检查是否有下一个整数或浮点数,以避免非法输入。
  • 当使用nextInt()nextDouble()方法读取输入数据时,可以捕获InputMismatchException异常来处理非法输入。在编写程序时,务必确保输入的数据类型与所使用的方法相符合。

2.5 关闭 Scanner

最后,当不再需要 Scanner 对象时,应该使用 close() 方法来关闭它以释放资源。

java 复制代码
Scanner scanner = new Scanner(System.in);
// 使用 scanner 处理输入
// ......
scanner.close(); // 关闭 Scanner

三、总结

总的来说,Scanner类是Java中的一个实用工具,用于读取用户输入和解析文本。它可以从不同来源(如标准输入、文件、字符串等)读取数据,并支持多种数据类型,包括整数、浮点数、字符串等。Scanner类的主要作用是提供一种简单的方式来获取和处理用户输入或文本数据。

通过使用Scanner类,我们可以轻松地从键盘获取不同类型的变量。首先,导入java.util.Scanner类,然后实例化Scanner对象并通过调用相关方法来获取输入的值。同时,要注意数据类型的匹配,以避免异常的出现。通过这种方法,我们可以编写交互性更强的Java程序,让用户能够输入自己的数据,提高程序的灵活性和用户体验。

相关推荐
打码人的日常分享4 分钟前
企业人力资源管理,人事档案管理,绩效考核,五险一金,招聘培训,薪酬管理一体化管理系统(源码)
java·数据库·python·需求分析·规格说明书
27669582925 分钟前
京东e卡滑块 分析
java·javascript·python·node.js·go·滑块·京东
爱写代码的刚子6 分钟前
C++知识总结
java·开发语言·c++
冷琴199614 分钟前
基于java+springboot的酒店预定网站、酒店客房管理系统
java·开发语言·spring boot
九圣残炎37 分钟前
【springboot】简易模块化开发项目整合Redis
spring boot·redis·后端
daiyang123...40 分钟前
IT 行业的就业情况
java
爬山算法1 小时前
Maven(6)如何使用Maven进行项目构建?
java·maven
.生产的驴1 小时前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
爱学的小涛1 小时前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
吹老师个人app编程教学1 小时前
详解Java中的BIO、NIO、AIO
java·开发语言·nio