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

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

一、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));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃柠檬的天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值