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

相关推荐
索码理11 分钟前
初探MCP:对Excel操作不熟练?不怕,MCP来帮你
人工智能·后端·mcp
Alan5215912 分钟前
Java + SQLServer:一键导出数据库表结构为 Markdown 文档
java·sql server
IT杨秀才13 分钟前
Go语言单元测试指南
后端·单元测试·go
陆通14 分钟前
MCP大模型协议:让AI与世界无缝对话的"万能翻译官"
后端
啾啾Fun14 分钟前
[Java基础]StringBuilder解析
java·stringbuilder
2401_8906658618 分钟前
免费送源码:Java+SpringBoot+MySQL SpringBoot网上宠物领养管理系统 计算机毕业设计原创定制
java·vue.js·spring boot·python·mysql·pycharm·html5
bobz96522 分钟前
LXC LXD vs KVM
后端
快乐源泉36 分钟前
【设计模式】已有工厂模式,抽象工厂改进了哪些?
后端·设计模式
Json____37 分钟前
springboot 处理编码的格式为opus的音频数据解决方案【java8】
spring boot·后端·音视频·pcm·音频处理·解码器·opus