首页 > 编程语言 >Java中读取用户输入的是谁?Scanner类

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

时间:2023-06-01 11:33:28浏览次数:37  
标签:Java Scanner source 字符串 public 输入 读取

前言

我们在初学 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);
    }
}

总结

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


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

标签:Java,Scanner,source,字符串,public,输入,读取
From: https://www.cnblogs.com/coding-rocket/p/17448477.html

相关文章

  • 从0到1搭建自己的脚手架(java后端) | 京东云技术团队
    一、脚手架是什么脚手架是一种基础设施工具,用于快速生成项目的框架代码和文件结构。它是一种标准化的开发工具,使开发人员能够在项目的早期阶段快速搭建出一个具备基本功能和结构的系统。二、脚手架的意义主流的微服务架构体系下很多公司会将原有的单体架构或者繁重的微服务进行拆分......
  • java中 & ,&&
    publicclassImoocStudent{publicstaticvoidmain(String[]args)throwsException{if(1>2&&10/0==0)//执行报错,0不能作为分母{System.out.println("******");}if(1>2&10/0==......
  • python读取配置文件
    配置文件作为一种可读性很好的格式,非常适用于存储程序中的配置数据。在每个配置文件中,配置数据会被分组(比如“config”和“cmd”)。每个分组在其中指定对应的各个变量值。如下:#定义config分组[config]platformName=AndroidappPackage=com.romweappActivity=com.romwe.Spl......
  • 基于RxJava2+Retrofit2精心打造的Android基础框架
    XSnow基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载、UI模块,基本都是项目中必用功能,每个模块充分解耦,可自由拓展。XSnow,X:未知一切,取其通用之意;Snow:雪,取其纯净之意。该框架通用纯净,只依赖公共核心库。项目依赖:c......
  • Java 一个函数返回两个以上的值
    正常函数只有一个返回值,但我们用数组来做为返回值,这样就可以实现一个函数返回多个值以计算时间差函数为例//获取时间间隔publicstaticString[]getTimeInterval(StringstrStartTime,StringstrStopTime){StringarrStr[]=newString[2];try{......
  • java jdk 8 181下载地址 还是华为给的下载靠谱啊
    https://repo.huaweicloud.com/java/jdk/8u181-b13/  ......
  • Java 获取时间间隔
    使用一个函数获取两种格式的时间差一、时间格式  00:12:50二、总秒数 140//获取时间间隔publicstaticString[]getTimeInterval(StringstrStartTime,StringstrStopTime){StringarrStr[]=newString[2];try{DateFormatdf=......
  • jQuery 是javascript的一个库(常用插件、处理器)
    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validationjQuery就是javascript的一个库,把我们常用的一些功能进行了封装,方便我们来调用,提高我们的开发效率。极大地简化了JavaScript编程。Javascipt跟jQuery的区别:Javascript是一门编程语言,我们用......
  • Linux 内核时钟架构之时钟源读取计数
    前面我们讲到,时钟源是给timekeeping使用的,timekeeping会定时更新,这就依赖timekeeping模块需要读取clocksource的计数,计算时间流逝。然后对时间进行叠加,得到当前时间。 ktime_get()--->tk_core.timekeeperclocksource.read()timekeeping_get_ns()--》read()......
  • 如何在JavaFX中使用CSS
    如何在JavaFX中使用CSSCSS用于定制用户界面的显示样式。JavaFX也可以通过css文件来支持CSS。对于JavaFX中的元素,有的会有默认的规则,我们对这个规则设置CSS样式,就可以修改其关联的元素的显示效果。比如,Label控件关联的规则名是.label,如果我们在CSS文件中加入:.lab......