Java中键盘输入的几种常见方式小结

 更新时间:2023年09月18日 09:18:06   作者:爱吃柠檬的天天  
本文主要介绍了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 tt,此时输出的值为其ASCII码116 116116,当我们将里面的i n t intint改为c h a r charchar,程序将正常显示出字母t tt。

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 键盘输入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot 整合 Lettuce Redis的实现方法

    SpringBoot 整合 Lettuce Redis的实现方法

    这篇文章主要介绍了SpringBoot 整合 Lettuce Redis的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Maven 自动化构建的实现示例

    Maven 自动化构建的实现示例

    本文主要介绍了Maven 自动化构建的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • java开发 线上问题排查命令详解

    java开发 线上问题排查命令详解

    这篇文章主要介绍了java开发 线上问题排查命令详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Mybatis插件+注解实现数据脱敏方式

    Mybatis插件+注解实现数据脱敏方式

    这篇文章主要介绍了Mybatis插件+注解实现数据脱敏方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • java 实现链栈存储的方法

    java 实现链栈存储的方法

    下面小编就为大家带来一篇java 实现链栈存储的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Spring读取配置文件属性实现方法

    Spring读取配置文件属性实现方法

    这篇文章主要介绍了Spring读取配置文件属性实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 超全MyBatis动态代理详解(绝对干货)

    超全MyBatis动态代理详解(绝对干货)

    这篇文章主要介绍了超全MyBatis动态代理详解(绝对干货),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Spring MVC打印@RequestBody、@Response日志的方法

    Spring MVC打印@RequestBody、@Response日志的方法

    这篇文章主要介绍了Spring MVC打印@RequestBody、@Response日志的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • Java Web学习教程之Hibernate And MyBatis的理解

    Java Web学习教程之Hibernate And MyBatis的理解

    这篇文章主要给大家介绍了关于Java Web学习教程之Hibernate And MyBatis的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们来一起学习学习吧。
    2018-04-04
  • MapStruct实体间转换的简单用法

    MapStruct实体间转换的简单用法

    今天小编就为大家分享一篇关于MapStruct实体间转换的简单用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论