读取一个键盘录入的数据,打印到控制台上

键盘本身就是一个标准的输入设备,对于java而言,对于这种输入设备都有相应的对象在System类中

 import java.io.IOException;
import java.io.InputStream; public class ReadKeyDemo {
public static void main(String[] args) throws IOException {
readKey();
}
public static void readKey() throws IOException {
InputStream in = System.in;
int ch =0;
while((ch = in.read())!=-1){//read()这个方法是阻塞式的方法,当没数据可读的时候等待
System.out.print((char)ch);
//in.close();//默认的输入和输出设备不要关闭资源,会发生异常,
}
}
}

获取用户键盘录入的数据,并将数据变成大写显示在控制台上,如果用户输入的是over,结束键盘录入

思路:
   1.因为键盘录入只能读取一个字节,要判断是否是voer,需要将读取到的字节转换成字符串,
   2.那就需要一个容器,StringBuilder
   3.在用户回车之前将录入的数据变成字符串,再判断是否是voer即可

import java.io.IOException;
import java.io.InputStream; public class ReadKeyTest {
public static void main(String[] args) throws IOException {
readKey();
}
public static void readKey() throws IOException {
//1.创建容器
StringBuilder sb = new StringBuilder();
//2.获取键盘读取流
InputStream in = System.in;
//3.定义变量记住读取的字节,并循环获取
int ch = 0;
while((ch = in.read())!=-1){
//在存储之情需要判断是否是换行标记,因为换行标记不存
if(ch=='\r')
continue;
if(ch=='\n'){
String temp = sb.toString();
if("over".endsWith(temp))
break;
System.out.println(temp.toUpperCase());
sb.delete(0, sb.length());//打印完之后要清空掉容器里的字符
}
else
//将读取到的数据存储到StringBuilder中
sb.append((char)ch);
//System.out.println(ch);
}
}
}

IO流_演示键盘录入的更多相关文章

  1. Java基础知识强化之IO流笔记51:IO流练习之 键盘录入学生信息按照总分排序写入文本文件中的案例

    1.  键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分排序写入文本文件中 分析:   A:创建学生类   B:创建集合对象      TreeSet<Student>   ...

  2. C++ IO流_数据的旅行之路

    1. 前言 程序中的数据总是在流动着,既然是流动就会有方向.数据从程序的外部流到程序内部,称为输入:数据从程序内部流到外部称为输出. C++提供有相应的API实现程序和外部数据之间的交互,统称这类AP ...

  3. java - >IO流_缓冲流(高效流)

    缓冲流(高效流) 在我们学习字节流与字符流的时候,大家都进行过读取文件中数据的操作,读取数据量大的文件时,读取的速度会很慢,很影响我们程序的效率,那么,我想提高速度,怎么办? Java中提高了一套缓冲 ...

  4. java ->IO流_打印流

    打印流的概述 打印流添加输出数据的功能,使它们能够方便地打印各种数据值表示形式. 打印流根据流的分类: 永远不会抛出IO异常 l  字节打印流  PrintStream l  字符打印流  Print ...

  5. java ->IO流_序列化流与反序列化流

    序列化流与反序列化流 用于从流中读取对象的操作流 ObjectInputStream    称为 反序列化流 用于向流中写入对象的操作流 ObjectOutputStream   称为 序列化流(对象 ...

  6. java ->IO流_字节流

    字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据. 字节输出流OutputStream OutputStre ...

  7. Java_初入IO流_字符流_Write-Read_小笔记

    package IO; import java.io.FileWriter; import java.io.IOException; class File_Writer { public static ...

  8. IO流_文件切割与合并(带配置信息)

    在切割文件的时候应该生成一个记录文件信息的文件,以便在以后合并文件的时候知道这个文件原来的文件名和记录文件切割完后生成了多少个切割文件 import java.io.File; import java ...

  9. IO流_文件切割与合并

    切割可以分两种方式:按文件个数切,按文件大小来切(建议用这种方式,因为按个数的话,有可能文件非常大) import java.io.File; import java.io.FileInputStre ...

随机推荐

  1. 从前端角度看ajax如何保护接口的安全性

    一.前言 在web中,使用Ajax调用API,撇开跨域不讲,怎么做安全验证,防止别的网站调用呢?假设没有做安全保障,任何用户都可以直接访问接口,这回暴露出极大的安全隐患. 二.后端怎么做? 1.一些接 ...

  2. css布局------块元素水平垂直居中的四种方法

    HTML <div class="parent answer-1"> <div></div></div> CSS .parent { ...

  3. 深入理解Java 8 Lambda(语言篇)

    State of Lambda by Brian Goetz 原文链接:http://lucida.me/blog/java-8-lambdas-insideout-language-features ...

  4. 在UAP中如何通过WebView控件进行C#与JS的交互

    最近由于项目需求,需要利用C#在UWP中与JS进行交互,由于还没有什么实战经验,所有就现在网上百度了一下,但是百度的结果显示大部分都是在Android和IOS上面的方法,UWP中的几乎没有.还好微软又 ...

  5. jQuery性能优化的一些参考建议

    JQ3.1 文档下载地址:https://pan.baidu.com/s/1c2vMQdy 一.注意定义jQuery变量的时候添加var关键字 这个不仅仅是JQ,在JS中都是必须的 二.如果有多个变量 ...

  6. 做webApp遇到的一些坑及解决方案

    1.问题:手机端click事件会有大约300ms的延迟 原因:手机端事件touchstart-->touchmove-->touchend or touchcancel-->clic ...

  7. 垂直水平居中总结css

    水平居中:给div设置一个宽度,然后添加margin:0 auto属性 div{ width:200px; margin:0 auto; } 让绝对定位的div垂直水平居中一(大盒子设置个相对定位) ...

  8. canvas-2arcTo.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 内网访问已经启动的vue项目

    1. 项目本机启动地址: http://localhost:8090/#/login 2.项目内网启动地址:  http://192.168.1.172:8090/#/login 3. 在vue项目的 ...

  10. Spring Boot MyBatis配置多种数据库

    mybatis-config.xml是支持配置多种数据库的,本文将介绍在Spring Boot中使用配置类来配置. 1. 配置application.yml # mybatis配置 mybatis: ...