其实在讲这篇文章的之前,我们已经使用过键盘录入和读取键盘录入了,当然,对于键盘来说只是一种方法,而统一的名称应该是录入设备和输出设备,而录入设备就包含了键盘、语音、写字板等等录入设备,而输出设备就包含诸如显示器、打印机等等,所以大家一提到这个就应该想到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);
}
}
}
}
智言个人博客




评论前必须登录!
注册