Java键盘录入三种方法

方法一:Scanner类中的方法

优点一: 可以获取键盘输入的字符串
优点二: 有现成的获取int,float等类型数据,非常强大,也非常方便

方法二:System.in和System.out方法 (使用read)

缺点一: 该方法能获取从键盘输入的字符,但只能针对一个字符的获取
缺点二: 获取的只是char类型的。如果想获得int,float等类型的输入,比较麻烦。

方法三:InputStreamReader和BufferedReader方法 (使用readline)

优点: 可以获取键盘输入的字符串
缺点: 如何要获取的是int,float等类型的仍然需要转换

注意,方法二、方法三都借助于read()方法,其为阻塞时方法,既等待输入后才会继续运行。

以下为程序实例。

/**
 * 键盘录入
 * @author        段
 * @date          2019.12.31
 
 */
import java.io.*;
import java.util.*;
public class KeyRu{
    public static void main(String[] args){//main函数
        SystemCharTest();//调用System.in方法
        ReadStringTest();//调用readline方法,使用BuffererReader缓冲区与InputStreamReader流
        ScannerAllTest();//调用Scanner方法
    }
public static void ScannerAllTest(){
    Scanner read=new Scanner(System.in);
    System.out.println("please enter name");
    String name =read.nextLine();//read String  keyboard entry
    System.out.println("please enter age");
    int age=read.nextInt();//读取整数输入
    System.out.println("Please entry score");
    double score=read.nextDouble();//读取double输入
    System.out.println("The information you enter is as follows:");
    System.out.print(name+"\t"+age+"\t"+score);
}
public static void SystemCharTest(){
    try{    //该方法中有个IOExcepiton需要捕获 
        System.out.println("Please enter a char");
        char c =(char)System.in.read();
        System.out.println ("The char that you entry is \t"+ c);
    }
    catch(IOException ex){
        
        ex.printStackTrace();
    }
}
public static void ReadStringTest(){
    System.out.println("please enter string");
    /*InputStreamReader is = new InputStreamReader(System.in); //new构造InputStreamReader对象 
    BufferedReader br = new BufferedReader(is); //拿构造的方法传到BufferedReader中 */
//    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//简化
    try(BufferedReader br=new BufferedReader(new InputStreamReader(System.in));)//try块退出时,会自动调用res.close()方法,关闭资源。
    { //该方法中有个IOExcepiton需要捕获 
      String name = br.readLine(); 
      System.out.println("ReadTest Output:" + name); 
    } 
    catch(IOException ex){ 
      ex.printStackTrace(); 
    }
}
}

注意:每个方法应单独演示。