A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 传奇查 于 2015-11-21 13:43 编辑

感觉对你有用就给个鼓励吧~~
题目都在代码里了~
  1. <font face="宋体" size="3">package cn.fuxi._07io;
  2. /**
  3. * 练习:
  4. *                 获取用户键盘录入的数据,并将数据变成大写显示在控制台上,如果用户输入over,结束键盘录入.
  5. *
  6. * 思路:
  7. *                 1.因为键盘录入只读取一个字节,要判断是否over,需要将读取到的字节拼接成字符串.
  8. *                 2.那就需要一个容器:StringBuilder.
  9. *                 3.在用户回车之前将输入的数据变成字符串判断即可.
  10. */
  11. import java.io.*;
  12. import java.util.*;

  13. public class _02InputStreamTest {
  14.         public static void main(String[] args) throws IOException {
  15.                 //method_1();
  16.                 method_2();

  17.         }
  18.         //简易修改逻辑顺序
  19.         public static void method_2() throws IOException{
  20.                 InputStream is = System.in;//创建系统输入容器
  21.                 StringBuilder stb = new StringBuilder();//创建字符接收容器
  22.                 int ch = 0;
  23.                 while((ch=is.read())!=-1){//将字符读取到容器中
  24.                         if(ch == '\r'){//回车键的ASCII字符为'\r\n',其中'\r'不被windows识别,不起作用
  25.                                 continue;
  26.                         }else if(ch != '\n'){//'\n'起回车作用,这里是说不敲回车时,存入字符进容器中
  27.                                 stb.append((char)ch);
  28.                         } else {//用户输入了回车符之后的情况!
  29.                                 String s = stb.toString().toUpperCase();//方便之后打印的字符串大写转换
  30.                                 if(s.equals("OVER")){//如果匹配到"over"就退出循环结束程序
  31.                                         break;
  32.                                         }
  33.                                 System.out.println(s);//放在后面的目的是避免吧"OVER"也打印出来
  34.                                 stb.delete(0, stb.length());//每一行的数据清空一次,避免重复打印
  35.                         }
  36.                 }               
  37.         }
  38.         //教程中的方式不好理解
  39.         public static void method_1() throws IOException {
  40.                 //1.创建容器
  41.                 StringBuilder stb = new StringBuilder();
  42.                 //2.获取键盘读取流
  43.                 InputStream is = System.in;
  44.                 //3.定义变量记录读取到的字节,并循环获取
  45.                 int ch=0;
  46.                 while((ch=is.read())!=-1){
  47.                         //在存储之前需要判断是否是换行标记,因为换行标记不存储.
  48.                         if(ch=='\r'){
  49.                                 continue;
  50.                         }else if(ch == '\n'){
  51.                                 String temp = stb.toString();
  52.                                 if("over".equals(temp)){
  53.                                         break;
  54.                                         }
  55.                                         System.out.println(temp.toUpperCase());
  56.                                         stb.delete(0, stb.length());
  57.                         }else{
  58.                                 //将读取到的字节存储到StringBuilder中
  59.                                 stb.append((char)ch);
  60.                         }
  61.                 }
  62.         }
  63. }</font>
复制代码

感觉对你有用就给个鼓励吧~~

1 个回复

倒序浏览
写的好详细,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马