【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程序,让用户能够输入自己的数据,提高程序的灵活性和用户体验。

相关推荐
爬山算法5 分钟前
Maven(28)如何使用Maven进行依赖解析?
java·maven
hlsd#12 分钟前
go mod 依赖管理
开发语言·后端·golang
陈大爷(有低保)16 分钟前
三层架构和MVC以及它们的融合
后端·mvc
亦世凡华、16 分钟前
【启程Golang之旅】从零开始构建可扩展的微服务架构
开发语言·经验分享·后端·golang
河西石头17 分钟前
一步一步从asp.net core mvc中访问asp.net core WebApi
后端·asp.net·mvc·.net core访问api·httpclient的使用
2401_8574396929 分钟前
SpringBoot框架在资产管理中的应用
java·spring boot·后端
怀旧66630 分钟前
spring boot 项目配置https服务
java·spring boot·后端·学习·个人开发·1024程序员节
李老头探索32 分钟前
Java面试之Java中实现多线程有几种方法
java·开发语言·面试
芒果披萨37 分钟前
Filter和Listener
java·filter
qq_49244844642 分钟前
Java实现App自动化(Appium Demo)
java