Java中读取用户输入的是谁?Scanner类

news2024/11/26 20:24:26

目录

  • 前言
  • 一、Scanner类
  • 二、Scanner类基本使用
    • 1. 基本使用
    • 2. nextLine()方法

前言

我们在初学 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类中部分方法

二、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);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据库】表的增删改查(基础 )

目录 1、新增/插入数据 1.1、给表中所有字段插入数据 1.1、给表中指定字段&#xff08;列&#xff09;插入数据 1.2、一次插入多条记录 1.3、时间日期数据的插入 1.3.1、手动插入某个时间 1.3.2、插入当前时刻的时间 2、查找操作 2.1、全列查找&#xff08;查找表的…

【ArcGIS Pro二次开发】(24):现状、规划用地图斑的变化检查

如题如见&#xff0c;这是一个检查现状、规划用地变化的工具。 通过此工具&#xff0c;可以生成变化图斑&#xff0c;检查规划中发生的变化&#xff0c;明确是正常的规划措施&#xff0c;还是因为误操作产生的图斑变化。 一、要实现的功能 如上图所示&#xff0c;点击【检查现状…

【Daily Share】没有域名怎么破?手把手教你如何通过hosts配置域名(假域名)

目录 ❌前言&#x1f4c4;hosts文件&#x1f989;DNS解析步骤&#x1f44c;配置伪域名第一步 修改本机hosts配置第二步 配置服务器nginx &#x1f503;流程图 ❌前言 ip记不住&#xff1f;&#xff1f;&#xff1f; 域名不想买&#xff1f;&#xff1f;&#xff1f; 每次当我…

系统分析师《企业信息化战略与实施》高频知识点

企业信息化战略与实施---企业信息化与电子商务 业务流程重组&#xff08;Business Process Reengineering BPR&#xff09;是针对企业业务流程的基本问题进行反思&#xff0c;并对它进行彻底的重新设计&#xff0c;使业绩取得显著性提高。与目标管理、全面质量管理、战略管理等…

桂林阳朔4天4夜旅游攻略-亲测整理踩坑版本

桂林阳朔4天4夜旅游攻略-亲测整理踩坑版本 前言我的行程上海飞机出发到达两江机场桂林第一家酒店第一天早饭桂林米粉正宗吃法坐大巴去杨堤路口杨堤路口坐巴士直达杨堤码头杨堤到兴坪坐电动竹筏兴坪--20元背面打卡地兴坪古镇--汽车站阳朔酒店租电动车遇龙河漂流&#xff08;*五星…

Three.js教程:Face3对象定义Geometry的三角形面

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 其他系列工具&#xff1a; NSDT简石数字孪生 Face3对象定义Geometry的三角形面 几何体Geometry的三角面属性geometry.faces和缓冲类型几何体BufferGeometry顶点索引属性BufferGeometry.index类似都是顶点位置数据的索引值…

【MySQL入门指南】MySQL中的数据类型总结

文章目录 MySQL数据类型一、数值类型1.类型总览2.BIT类型3.INT系列类型4.浮点数类型1)float与double2.float与decimal 二、字符串类型1.类型总览2.CHAR类型3.VARCHAR类型 三、日期与时间类型四、枚举类型1.enum类型2.set类型3.在set中的查找 MySQL数据类型 ​ MySQL中支持的数…

ONLYOFFICE协作空间是什么?

今天给大家带来一个好消息&#xff0c;ONLYOFFICE推出更安全的协作空间了&#xff0c;好多朋友看到这个标题不认识是什么&#xff0c;我也是&#xff0c;今天来给大家介绍一下。 什么是 ONLYOFFICE 协作空间 简单来说ONLYOFFICE协作空间是一个协同工作平台&#xff0c;帮助您更…

Unity3D:模拟器视图

推荐&#xff1a;将NSDT场景编辑器加入你的3D工具链 3D工具集&#xff1a;NSDT简石数字孪生 模拟器视图 “模拟器”视图在模拟的移动设备上显示应用程序。使用它来查看应用程序与该设备的屏幕形状、分辨率和方向的显示方式。 模拟器视图的屏幕截图 使用模拟器视图 若要打开…

微服务学习——Docker

初识Docker 项目部署的问题 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题: 依赖关系复杂&#xff0c;容易出现兼容性问题开发、测试、生产环境有差异 Docker Docker如何解决依赖的兼容问题的? 将应用的Libs(函数库)、 Deps&#xf…

【软件测试】第1章 软件测试概述

系列文章目录 文章目录 系列文章目录前言第1章 软件测试概述1.1 软件、软件危机和软件工程1.1.1 基本概念1.1.2 软件工程的目标及其一般开发过程1.1.3 软件过程模型 1.2 软件缺陷与软件故障1.2.1 基本概念1.2.2 典型案例 1.3 软件测试的概念1.3.1 软件测试的定义1.3.2 软件测试…

2023全球运维大会 | 智能运维中的数据管理和数据探索

GOPS 全球运维大会由高效运维社区&#xff08;GreatOPS&#xff09;、开放运维联盟&#xff08;OOPSA&#xff09;和 DevOps 时代社区联合主办&#xff0c;指导单位为云计算开源产业联盟、FinOps产业推进方阵。迄今为止&#xff0c;GOPS 已经举行了十九次&#xff0c;大会参会嘉…

Docker网络与资源控制

目录 一、Docker网络 1.Docker网络模式 2.Docker网络实现的原理 3.映射端口 4.none模式 5.bridge模式 二、资源控制 1&#xff0e;CPU 资源控制 2.cgroups有四大功能&#xff1a; 一、Docker网络 1.Docker网络模式 ●Host&#xff1a;容器将不会虚拟出自己的网卡&am…

如何保护数据安全?企业该从部署SSL证书开始

数字化时代&#xff0c;大数据开始蔓延到各行各业&#xff0c;影响着生活的方方面面。在犹如“皇帝穿新衣”般透明的大数据时代&#xff0c;数据泄露无孔不入&#xff0c;存在问题层出不穷&#xff0c;未知的漏洞隐患、安全边界的模糊、新的网络攻击手段、个人隐私的无处藏身等…

音视频开发面试题大盘点:掌握这些基础知识,你就能轻松应对面试

前言 音视频开发作为一种高技术含量的领域&#xff0c;随着人们对数字媒体的需求不断增加&#xff0c;其前景非常广阔。预计在2023年&#xff0c;音视频开发领域仍将继续保持快速发展的态势&#xff0c;尤其是在移动互联网、物联网、虚拟现实、增强现实等领域。 根据BOSS招聘…

deepstream6.2更新的新特性-支持雷达lidar的推理检测

1,其实在deepstream6.1中已经加入了3D深度图像 其实在deepstream6.1中已经加入了3D深度图像,可以将深度图像的数据显示出来,但是需要专门的深度相机,官方给出的是Intel realSense D435相机,它可以读取相机数据,并进行点云显示以及渲染深度绘制,这个功能有点类似调用ope…

ES集群配置

一、高并发下如何保证读写一致 1.1 写操作 对于写操作&#xff0c;一致性级别支持 quorum/one/all&#xff0c;默认为 quorum&#xff0c;即只有当大多数分片可用时才允许写操作。但即使大多数可用&#xff0c;也可能存在因为网络等原因导致写入副本失败&#xff0c;这样该副本…

centos集群上安装hive客户端的操作步骤以及hive介绍

系列文章目录 虚拟机centos7配置Hadoop单节点伪分布配置教程​​​​​​ hbase进阶操作——读流程与写流程介绍 HBase进阶——文件的合并、 MemStore Flush、StoreFile Compaction、 Region Split、高可用与预分区介绍 centos7虚拟机下hbase的使用案例讲解 文章目录 前言…

【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata

NacosSentinelSeata 9/9 1、SpringCloud Alibaba简介1.1 主要功能1.2 具体组件 2、SpringCloud Alibaba Nacos服务注册和配置中心2.1 Nacos介绍2.2 Nacos下载安装2.3 使用Nacos作为注册中心2.3.1 在父工程的pom文件中引入springcloudalibaba依赖2.3.2 创建cloudalibaba-provide…

面向对象(高级)-包装类的理解_基本数据类型、包装类、String类型间的转换及练习

包装类 大纲 包装类的使用 1.为什么要使用包装类&#xff1f; 为了使基本数据类型的变量具备引用数据类型变量的相关特征&#xff08;比如&#xff1a;封装性、继承性、多态性&#xff09;。我们给各个基本 数据类型的变量都提供了对应的包装类。2.&#xff08;掌握&#xff…