前言

我们在初学 Java 编程的时候,总是感觉很枯燥乏味,想着做点可以交互的小系统,可以让用户自由输入,系统可以接收做出反映。这就要介绍一下 Java 中的 Scanner 类了。


一、Scanner类

Java 中的 Scanner 类是一个用于读取用户输入的工具类。它可以从控制台、文件、字符串等多种来源读取数据,并将其转换为不同的数据类型,如整数、浮点数、布尔值等。

Scanner 类是在 Java 5 版本中首次引入,在 java.util 包下,是 Java 的工具类,是一个最终类,实现了 Iterator, Closeable 两个接口。

public final class Scanner implements Iterator<String>, Closeable {}

我们从 Scanner 类中可以看到其提供了多个构造器,不同的构造器可以接收不同的数据源:输入流、文件、字符串等,然后进行数据解析。

// 读取可读资源,并指定模式分隔
private Scanner(Readable source, Pattern pattern) {}
// 读取可读资源
public Scanner(Readable source) {}
// 读取输入流
public Scanner(InputStream source) {}
// 读取输入流,并指定字符编码类型
public Scanner(InputStream source, String charsetName) {}
// 读取文件
public Scanner(File source) throws FileNotFoundException {}
// 读取文件,并指定字符编码类型
public Scanner(File source, String charsetName) throws FileNotFoundException {}
// 读取路径文件
public Scanner(Path source) throws IOException {}
// 读取字符串
public Scanner(String source) {} ......

Scanner 类提供了许多有用的方法,如 next()、nextInt()、nextLine() 等,使得读取和解析输入变得非常方便。同时,Scanner 类还支持定界符(delimiter)的设置,可以根据指定的分隔符对输入进行分割,进一步简化输入处理的过程。

二、Scanner类基本使用

1. 基本使用

使用 Scanner 类,首先需要创建一个 Scanner 对象,并将其与一个输入流(如 System.in)相关联,然后使用 Scanner 对象的 next() 或 nextLine() 方法读取用户输入的文本。当然读取其他数据类型也是没有问题的,就需要使用对应类型的方法,如 nextInt()、nextShort()、nextLong() 等等。

import java.util.Scanner;

public class Test {
public static void main(String[] args) {
// 创建Scanner对象
Scanner scanner = new Scanner(System.in);
// 提示用户输入一个字符串
System.out.print("请输入一个字符串: ");
// 读取用户控制台输入的字符串
String input = scanner.nextLine();
// 控制台打印用户输入的字符串
System.out.println("你输入的字符串是: " + input);
}
}

当用户输入文本后,按下回车键后,输入的文本将作为字符串被读取并保存在 input 变量中。此时程序会将读取的字符串打印出来。

2. nextLine()方法

Scanner 类中的 nextLine() 方法用于获取输入的下一行文本。它会扫描输入流中当前位置到行尾(包括换行符 "\n"),并返回该行文本作为一个字符串,不包括行尾符号。如果当前位置已经是行尾,它将返回一个空字符串。可以通过重复调用该方法来连续读取多行文本。

import java.util.Scanner;

public class Test {
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入多行文本,以空行结束:"); StringBuilder stringBuilder = new StringBuilder();
// 判断是否有下一行
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
// 遇到空行退出循环
if (line.isEmpty()) {
break;
} stringBuilder.append(line);
// 拼接行尾符号,保留换行格式
stringBuilder.append('\n');
} String input = stringBuilder.toString();
System.out.println("输入的多行文本为:");
System.out.println(input);
}
}

总结

现在我们就可以使用 Scanner 类中的方法去接收用户的一些输入了,可以自己开发一些简易的小系统,是可以和用户交互的。


关注公众号:编程火箭车

我们定期发布编程相关的文章、资讯、活动等内容。帮助编程爱好者、初学者或初级程序员快速入门、打牢基础。欢迎大家关注,和我们一起探索编程的精彩世界。

Java中读取用户输入的是谁?Scanner类的更多相关文章

  1. java中取得用户输入的方法

    java中取得用户输入的方法 1.采用java.util.Scanner类 采用Scannerd的next()方法读取,测试代码如下: Scanner sc=new Scanner(System.in ...

  2. 8、JAVA中的用户输入(I/0交互过程)

    这里在数组的学习中用到了用户输入,也就是交互模式,日常的数据,不可能每一次都是程序员定义好的,终究需要用户与程序之间进行交互,机器等待用户输入,用户通过键盘输入所需数据(数据包括,字符,字串,数值等) ...

  3. read命令读取用户输入

    read命令用于从终端或文件中读取用户输入,它读取整行输入,如果没有指定名称,读取的行被赋值给内部变量REPLY.read命令常用选项:-a,-p,-s,-t,-n 1.REPLY变量 $readhe ...

  4. Shell 读取用户输入

    14.2  读取用户输入 14.2.1  变量 上一章我们谈到如何定义或取消变量,变量可被设置为当前shell的局部变量,或是环境变量.如果您的shell脚本不需要调用其他脚本,其中的变量通常设置为脚 ...

  5. Java中读取.properties配置文件的通用类

    由于Java中读取配置文件的代码比较固定,所以可以将读取配置文件的那部分功能单独作为一个类,以后可以复用.为了能够达到复用的目的,不能由配置文件中每一个属性生成一个函数去读取,我们需要一种通用的方法读 ...

  6. Java初学者作业——编写 Java 程序,用户输入 3 个操作数,分别求出最大值、最小值和平均值。

    返回本章节 返回作业目录 需求说明: 编写 Java 程序,用户输入 3 个操作数,分别求出最大值.最小值和平均值. 实现思路: 定义 Java 类,定义 3 个方法,用来求 3 个数字的最大值.最小 ...

  7. Java中读取文件

    Java中读取文件,去除一些分隔符,保存在多维数组里面 public void readFile(String filePath) { File file=new File(filePath); Ar ...

  8. java中读取特殊文件的类型

    java中读取特殊文件的类型: 第一种方法(字符拼接读取): public static String getType(String s){ String s1=s.substring(s.index ...

  9. Java中的字节输入出流和字符输入输出流

    Java中的字节输入出流和字符输入输出流 以下哪个流类属于面向字符的输入流( ) A BufferedWriter B FileInputStream C ObjectInputStream D In ...

  10. [python]print简单用法和读取用户输入

    代码开发环境:Eclipse 1.打印字符串: print "Hello world!" myString = "Hello world!" print myS ...

随机推荐

  1. Mybatis分页插件PageHelper的配置及使用方法

    尊重人家的知识成果 推荐 该作者总结的不错! --->> --->> @author 扎心了老铁 Mybatis分页插件PageHelper的配置及使用方法

  2. 【责任链设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

    简介 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,也叫职责链模式.命令链模式.这种模式为请求创建了一个接收者对象的链,允许你将请求沿着处理者链进行 ...

  3. Perceptron, Support Vector Machine and Dual Optimization Problem (1)

    Linear Decision Boundary(线性决策边界) Example. (classification problem) 给定一个二元的特征空间 \(\mathcal{X} = \left ...

  4. .NET周报 【4月第1期 2023-04-02】

    国内文章 探索 SK 示例 -- GitHub 存储库中的机器人 https://www.cnblogs.com/shanyou/p/17280627.html 微软 3月22日 一篇文章" ...

  5. 最简单Openwrt ipv6配置,局域网WAN6中继模式获取原生ipv6地址

    条件 condition wan 和 wan6 是默认配置     Wan and wan6 are the default configurations 同时wan6可以获取到原生IPv6     ...

  6. [Linux]常用命令之【which/whereis/whatis】

    1 which shows the full path of (shell) commands. 显示(系统)命令所在目录 [root@test ~]# which ls alias ls='ls - ...

  7. 机器学习(四):4层BP神经网络(只用numpy不调包)用于训练鸢尾花数据集|准确率96%

    题目: 设计四层BP网络,以g(x)=sigmoid(x)为激活函数, 神经网络结构为:[4,10,6, 3],其中,输入层为4个节点,第一个隐含层神经元个数为10个节点:第二个隐含层神经元个数为6个 ...

  8. 四月二十七日java基础知识

    1.多线程的主要目的是讲一个程序中的各个"程序段"并发化2.并行执行通常表示为同一时刻有多个代码在处理器上执行3.并发执行通常表示为在单个处理器上,同一时刻只执行一个代码,但在一个 ...

  9. 基于【ESLint+JavaScript Standard Style】标准的VUE/JS/html风格指南

    小仙男前端代码风格规范指南v1.0 概述 本规范是适用于小仙男团队及前端团队所搭建的各种前端框架代码的通用风格规范指南: 使用时,请遵循指南细则进行代码风格约束,并在提交之前确保进行代码风格的修正操作 ...

  10. 【Java SE】多线程

    1.1 线程的生命周期 ![](file://D:\资料\学习笔记\Java\多线程\1.png?msec=1648087619803) 方法名 说明 yield() stop() sleep() w ...