标准输入流——手动实现键盘录入数据演示

在System类中,有两个静态成员变量:

  • public static final InputStream in 通常,该流对应于键盘输入或由主机环境或用户指定的另一个输入源。
  • public static final PrintStream out 通常,此流对应于显示输出或由主机环境或用户指定的另一个输出目标。

当我们使用in方法来进行数据的输入时,会发现,由于字节流的缘故且是UTF-8编码,无法读取“中文”

public static void main(String[] args) throws IOException {
        //public static final InputStream in 通常,该流对应于键盘输入或由主机环境或用户指定的另一个输入源。
        InputStream is = System.in;
        //字节流写数据
        int by;
        while ((by=is.read())!=-1){
            System.out.print((char)by);
        }
    }

 此时我们就需要用到转换流来进行字节流-->字符流的转换

转换成字符流后,读取数据操作除了一次读取一个字节、一次读取一个字节数组外,如果使用到一次只读取一行数据时,还需要用到字符缓冲输入流的特有方法,于是还需要将字符输入流包装成字符缓冲输入流

public static void main(String[] args) throws IOException {
        //public static final InputStream in 通常,该流对应于键盘输入或由主机环境或用户指定的另一个输入源。
        InputStream is = System.in;
        
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);

        System.out.println("请输入一个字符串:");
        String s = br.readLine();
        System.out.println("你输入的字符串是:"+s);

        System.out.println("请输入一个整数:");
        int i = Integer.parseInt(br.readLine());
        System.out.println("你输入的整数是:" +i);
    }

运行结果:

通过上述操作后,会发现,手动实现键盘录入数据的代码实现过于复杂而且不方便,所以Java为我们提供了一个工具类:Scanner

通过Scanner来调用System.in来实现键盘录入数据的功能,十分的方便

posted @ 2020-04-22 15:14  硬盘红了  阅读(356)  评论(0编辑  收藏  举报