黑马程序员技术交流社区
标题:
【IO流】用户键盘录入系统输出练习!修改加详细注释版!!
[打印本页]
作者:
传奇查
时间:
2015-11-21 13:40
标题:
【IO流】用户键盘录入系统输出练习!修改加详细注释版!!
本帖最后由 传奇查 于 2015-11-21 13:43 编辑
感觉对你有用就给个鼓励吧~
~
题目都在代码里了~
<font face="宋体" size="3">package cn.fuxi._07io;
/**
* 练习:
* 获取用户键盘录入的数据,并将数据变成大写显示在控制台上,如果用户输入over,结束键盘录入.
*
* 思路:
* 1.因为键盘录入只读取一个字节,要判断是否over,需要将读取到的字节拼接成字符串.
* 2.那就需要一个容器:StringBuilder.
* 3.在用户回车之前将输入的数据变成字符串判断即可.
*/
import java.io.*;
import java.util.*;
public class _02InputStreamTest {
public static void main(String[] args) throws IOException {
//method_1();
method_2();
}
//简易修改逻辑顺序
public static void method_2() throws IOException{
InputStream is = System.in;//创建系统输入容器
StringBuilder stb = new StringBuilder();//创建字符接收容器
int ch = 0;
while((ch=is.read())!=-1){//将字符读取到容器中
if(ch == '\r'){//回车键的ASCII字符为'\r\n',其中'\r'不被windows识别,不起作用
continue;
}else if(ch != '\n'){//'\n'起回车作用,这里是说不敲回车时,存入字符进容器中
stb.append((char)ch);
} else {//用户输入了回车符之后的情况!
String s = stb.toString().toUpperCase();//方便之后打印的字符串大写转换
if(s.equals("OVER")){//如果匹配到"over"就退出循环结束程序
break;
}
System.out.println(s);//放在后面的目的是避免吧"OVER"也打印出来
stb.delete(0, stb.length());//每一行的数据清空一次,避免重复打印
}
}
}
//教程中的方式不好理解
public static void method_1() throws IOException {
//1.创建容器
StringBuilder stb = new StringBuilder();
//2.获取键盘读取流
InputStream is = System.in;
//3.定义变量记录读取到的字节,并循环获取
int ch=0;
while((ch=is.read())!=-1){
//在存储之前需要判断是否是换行标记,因为换行标记不存储.
if(ch=='\r'){
continue;
}else if(ch == '\n'){
String temp = stb.toString();
if("over".equals(temp)){
break;
}
System.out.println(temp.toUpperCase());
stb.delete(0, stb.length());
}else{
//将读取到的字节存储到StringBuilder中
stb.append((char)ch);
}
}
}
}</font>
复制代码
感觉对你有用就给个鼓励吧~
~
作者:
苹果核的梦想
时间:
2015-11-21 14:19
写的好详细,学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2