Java——键盘输入的几种常见方式

Java——键盘输入的几种常见方式

文章目录:

  • Java——键盘输入的几种常见方式
    • 一、IO流
    • 二、Scanner类
    • 三 、BufferedReader写入

一、IO流

在Java的输入中,是以输入流的形式进入程序,因此无法直接指定输入的类型,仅能读取键盘上的内容,返回一个ASCII码,所以在使用输入流的时候,本质是一串ASCII码,需要将类型强转至char,才能正确显示。

在Java的IO流中,键盘所输入的会先存放到缓冲流中,当按下Enter键的时候,将缓重流中的数据写入到内存中,因为此性质,我们无法在键盘输入的过程中直接获取内容。

class InputDemo {
    public static void main(String[] args)
      throws java.io.IOException{
    int input;
    input=(int) System.in.read();
    System.out.println(input);
    }
}

当我们输入 t t t,此时输出的值为其ASCII码 116 116 116,当我们将里面的 i n t int int改为 c h a r char char,程序将正常显示出字母 t t t

class InputDemo {
    public static void main(String[] args)
      throws java.io.IOException{
    char input;
    input=(char) System.in.read();
    System.out.println(input);
    }
}

在System.io.read()函数中,read是等待回车键刷取缓存的内容,因此此函数不能吸收回车和换行符,但readLine函数可以吸收回车和换行。若只是用read函数可以采用写两个read进行吸收回车。

因为Java的异常捕获机制,我们需要在函数的开头加上throws java.io.IOException

二、Scanner类

从Java5开始,Java引入了Scanner类作为输入的类型。由上可知,Java的输入是以流的方式进入,只能以字符串的形式进入,但Scanner类支持以数据类型读取内容。

由于我们是使用Scanner这个类进行输入控制,因此首先我们需要构造出这个类的对象。

Scanner input=new Scanner(System.in);

其中Scanner的函数常见的为.nextxxx,xxx为数据类型,若类型为字符串,需要使用.nextLine或者.next。.next相当于C/C++中的scanf和cin,遇到空格或回车就停止。.nextLine相对于C/C++中的gets。

class InputDemo {
    public static void main(String[] args){
    Scanner input=new Scanner(System.in);
    String in=input.next();
    System.out.println(in);
    }
}

三 、BufferedReader写入

以上两种方法是用的字符输入流的形式,BufferedReader采用的是缓存输入流的形式。

同样,此类在java.io.*内,因此我们需要在开头导入包。

import java.io.*;//*表示此目录下的所有
import java.io.BufferedReader;//直接导入

BufferedReader和正常的io流成员类型基本一致,唯一不同是类的构建,BufferedReader需要使用字符输入流作为基类。

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

你可能感兴趣的:(Java,java,开发语言)