其实在讲这篇文章的之前,我们已经使用过键盘录入和读取键盘录入了,当然,对于键盘来说只是一种方法,而统一的名称应该是录入设备和输出设备,而录入设备就包含了键盘、语音、写字板等等录入设备,而输出设备就包含诸如显示器、打印机等等,所以大家一提到这个就应该想到System类里面的in和out。
没错,那我们在IO流中使用键盘录入和读取键盘录入的内容也同样会用到in和out,那么接下来给大家简单的演示一段代码:
import java.io.IOException; import java.io.InputStream; public class Demo { public static void main(String[] args) throws IOException{ InputStream ins = System.in; //使用键盘输入一个信息并创建一个字节流对象 int ch = ins.read(); //读取一个键盘输入的一个字节并赋值给ch System.out.println(ch); //打印一个ch的字节值 } }
由于字节流的read方法是一个字节一个字节的读取,所以要打印出完成的输入值,需要使用一个循环来进行操作,如下:
import java.io.IOException; import java.io.InputStream; public class Demo { public static void main(String[] args) throws IOException{ InputStream ins = System.in; //使用键盘输入一个信息并创建一个字节流对象 int ch = 0; while((ch=ins.read())!=-1){ System.out.println(ch); //循环打印出ch的字节值 } ins.close();//这里只要关闭就不能再次输入了,除非重新运行程序。 } }
但是有一点,在输入的时候会另外读取出“t”和“n”的值13和10。
另外,一般我们如果在结尾带上关闭流,那之后就再也无法输入了,所以一定要考虑清楚在什么时候使用。
做个简单的需求演练:
import java.io.IOException; import java.io.InputStream; public class Demo { public static void main(String[] args) throws IOException{ /* * 获取用户键盘录入的数据,并将数据编程大写显示在控制台上,如果用户输入的是over,则结束键盘录入 * * 思路: * 1.因为键盘录入只读取一个字节,要判断是否是over,需要先将读到的字节转成字符串。 * 2.那就需要一个容器。StringBuilder比较好 * 3.在用户回车之前将录入的数据变成字符串判断即可。 * */ //1.创建容器。 StringBuilder sb = new StringBuilder(); //2.获取键盘读取流 InputStream ins = System.in; //3.定义变量记录读取到的字节,并循环获取。 int ch = 0; while((ch=ins.read())!=-1){ //在存储之前需要判断是否是换行标记,因为换行标记不存储。 if(ch=='r'){ continue; }else if(ch=='n'){ String temp = sb.toString(); if("over".equals(temp)){ break; }else{ System.out.println(temp.toUpperCase()); sb.delete(0, sb.length()); } }else{ //将读取到的字节存储到StringBuilder中。 sb.append((char)ch); } } } }
评论前必须登录!
注册