java 控制台输入

我有一段时间对于java控制台输入的概念觉得棘手和复杂,究其原因在于,要求的输入格式各式各样,针对不同的要求要设计不同获取输入的代码。

输入方法

获取控制台输入无非两种常用方法,以读取多行输入为例:

  1. BufferedReader字符缓冲流
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(System.in));
            String str = null;
            while (true) {
                str = reader.readLine();
                if (!str.equals(""))
                    System.out.println(str);
                else
                    break;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
  1. Scanner
public static void main(String[] args)
    {
        StringBuilder stringbuilder = new StringBuilder();
        Scanner scanner = new Scanner(System.in);
        while(true)
        {
            String text = scanner.nextLine().trim();
            if ("".equals(text))
            {
                break;
            }
            stringbuilder.append(text);
        }        
        System.out.println(stringbuilder.toString());
}

不同输入格式

遇到不同的输入格式要求,可以将按行读取后的字符串,按照要求进行另行处理,比方说按逗号分隔,空格分隔等等。
我之所以产生困惑的原因在于,希望在读取的过程中就把数据处理成格式要求的样子。究其原因还是思维混乱,急功近利以及代码耦合。而Scanner中众多的nextInt,nextChar,nextFloat等方法虽然在一定程度上提供了便利,但是使我养成了想把在读取的过程中就把数据处理成格式要求的样子的习惯,一定程度上来说算是坏事吧。

next和nextLine的区别

多记录一嘴,这个很多文章讲的很清楚了,next关键在于next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。nextLine在于把enter当作结束符,按行读取,所以能够读取空格等字符。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,131评论 0 10
  • 使用Scanner类在控制台进行输入
    ledge阅读 4,470评论 0 1
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,946评论 0 5
  • 01 隔三差五听人物志,略微窃取些长进。 今早醒来听《傅雷》,收获如下。 在《约翰·克里斯多夫》的译本中,傅雷写的...
    夕夕夕木木木阅读 3,644评论 0 9
  • 成长路上必经的 一是肯定和欣赏带给你的飘然与自豪 一是否定和恶意给与你最沉痛的打击 前者教你自信和爱人 后者引你思...
    懒墨阅读 1,716评论 2 5