JAVA如何从控制台读入数据

2025-04-25 14:50:20

在进行OJ比赛或测试时,经常会遇到I/O型的题目,这种题目就需要自己去写从控制台读入数据的代码,本文就主要介绍Java如何从控制台读取数据,并根据读取函数不同分为三类进行举例讲解其对应的优缺点。

工具/原料

Intellij Idea

JDK 1.8

一、System.in.read()函数

1、通过System.in.read( )是从控制台读入数据最简单的方式,不过它有一个致命的缺点,即每次只能读入一个字节的数据。如下代码,我们用char类型来接收一个字节的数据,接收完成后将其打印到控制台。

JAVA如何从控制台读入数据

2、运行如上代码,在控制台输入字符a,按下回车键完成输入,可以看到控制台输出了字符a,可以注意到此时光标移动到了字符a所在位置的后两行。

JAVA如何从控制台读入数据

3、由于程序只能以回车键来提交数据,所以read()方法读入到内存的其他是a和回车键两个字符,可以通过在输出时将c转换为整型得以验证。其中97为字符a的ASCII码,10为\n的ASCII码。注意:由于一次只能读入一个字符且没有结束标识,所以System.in.read()很少用到。

JAVA如何从控制台读入数据

二、Scanner

1、可以通过扫描器Scanner来获取从控制台输入的数据,一次最多可以读入一行数据,在创建Scanner时需要用System.in来初始化。以下为用Scanner读入控制台数据的样例代码:

JAVA如何从控制台读入数据

2、注意到上面代码中我们用到了nextLine()函数,该函数一次可以读入一行数据,在控制台按下回车键便可用此函数读入当前行数据,即nextLine()的结束标识为Enter键,且读入的数据不包括Enter。

JAVA如何从控制台读入数据

3、些外除了用nextLine()外,还可以用next()方法来获取数据;nextLine与next方法的主要区别为:1. nextLine可以接收包含空格、tab键的字符串,而next则会默认以空格为结束符(也可以修改为其他字符为结束符或分隔符)如下第一张图片所示,我们在控制台输入了hello world,却只读入了hello字符。2. next与nextLine在读入数据时都会忽略第一个有效字符之前的tab键、空格键及Enter键,此外next只有在读入到有效字符后才会以tab键、空格键或Enter键等为结束符如下第二张图片所示,我们在hello前加了两个空格,但在输出的数据中却忽略了hello前面的两个空格。

JAVA如何从控制台读入数据
JAVA如何从控制台读入数据

三、BufferedReader

1、由于艘绒庳焰next与nextLine在读入数据时都会忽略第一个有效字符之前的tab键、空格键及Enter键,所以就引出了通过Buff髫潋啜缅eredReader方式来读取控制台数据样例代码如下,可以看到BufferedReader以new InputStreamReader(System.in )作了初始化。

JAVA如何从控制台读入数据

2、运行如上代码,在控制台中输入 hello world,其中hello world前面保留了四个空格,可以看到输出结果中也保留了这四个空格。综上所述,我们可以看到BufferedRea颊俄岿髭der方式最能满足我们要保留原始输入内容的录入需求了,此外Scanner.readLine方式也会经常用到,其他的录入方式我们只需要了解即可。

JAVA如何从控制台读入数据
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢