在进行OJ比赛或测试时,经常会遇到I/O型的题目,这种题目就需要自己去写从控制台读入数据的代码,本文就主要介绍Java如何从控制台读取数据,并根据读取函数不同分为三类进行举例讲解其对应的优缺点。
工具/原料
Intellij Idea
JDK 1.8
一、System.in.read()函数
1、通过System.in.read( )是从控制台读入数据最简单的方式,不过它有一个致命的缺点,即每次只能读入一个字节的数据。如下代码,我们用char类型来接收一个字节的数据,接收完成后将其打印到控制台。

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

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


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