本帖最后由 传奇查 于 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>
复制代码
感觉对你有用就给个鼓励吧~~
|
|