【Java基础】获取键盘输入的三种方法

2020-06-20  本文已影响0人  irenb

前言

Java获取键盘输入方法一:

/**
 * 使用 System.in.read()
 * 只能获取一个字符,且必须是字符类型
 */
public static void testInput1() {
    System.out.println("请输入一个字符:");
    char ch = 0;
    try {
        int input = System.in.read();
        ch = (char) input;
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("你输入的字符为:" + ch);
}

Java获取键盘输入方法二:

/**
 *  使用 BufferedReader 类和 InputStreamReader 类
 *  默认读取的是字符串类型,如果需要int,float等类型可以通过字符串进行转换
 */
public static void testInput2() {
    System.out.println("请输入:");
    String input = null;
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    try {
        input = br.readLine();
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("你输入的值为:" + input);
}

Java获取键盘输入方法三:

/**
 *  使用 Scanner 类
 *  Scanner 是 Java5 开始推出的,不仅可以读取键盘输入值,也可以读取文件内容
 *  读取文件内容时,只需要将构造方法中的数据来源切换成该文件即可
 *
 *  键盘录入的三个步骤:导包、创建对象、接收数据
 */
public static void testInput3() {
    Scanner sc = new Scanner(System.in);

    System.out.println("请输入你的姓名:");
    String name = sc.nextLine(); // 读取字符串

    System.out.println("请输入你的年龄:");
    int age = sc.nextInt(); // 读取int

    System.out.println("请输入你的身高(单位:cm):");
    float height = sc.nextFloat(); // 读取float

    System.out.println("==========你的信息==========");
    System.out.println("姓名:" + name + "\n年龄:" + age + "\n身高:" + height + "cm\n===========================");
}
/**
 *  下面的代码是先执行 nextInt(),再执行 nextLine()
 *  问题:这段代码在输入年龄,敲击enter键后,跳过了输入姓名,直接到了输入身高这里,是什么原因引起的?
 *  原因:在执行 nextInt() 函数之后,敲击了enter回车键,回车符会被 nextLine() 函数吸收,
 *  实际上是执行了nextLine()函数吸收了输入的回车符(并不是没有执行nextLine函数)
 */
public static void testInputBug() {
    Scanner sc = new Scanner(System.in);

    System.out.println("请输入你的年龄:");
    int age = sc.nextInt(); // 读取int
    
    System.out.println("请输入你的姓名:");
    String name = sc.nextLine(); // 读取字符串(这里用next()方法,next() 方法不会接收上面的回车符)

    System.out.println("请输入你的身高(单位:cm):");
    float height = sc.nextFloat(); // 读取float

    System.out.println("==========你的信息==========");
    System.out.println("姓名:" + name + "\n年龄:" + age + "\n身高:" + height + "cm\n===========================");
}

nextInt() 和 next() 两者的功能是一样的,它们的区别是:

上一篇 下一篇

猜你喜欢

热点阅读