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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© bowen-xiao 中级黑马   /  2015-1-19 13:44  /  1358 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.         /**
  2.          * 需求:接收键盘输入,将输入字符转成大写并按回车输出
  3.          * 当输入over时程序退出
  4.          * @throws Exception
  5.          * @since JDK 1.6
  6.          */
  7.         public void sysInTest() throws Exception {
  8.                 InputStream fis = (InputStream)System.in;
  9.                 StringBuilder stb = new StringBuilder();
  10.                 while(true){
  11.                         int ch = fis.read();
  12.                         if('\r' == ch)
  13.                                 continue;
  14.                         if('\n' == ch){
  15.                                 String s = stb.toString();
  16.                                 if(s.equals("over")){
  17.                                         break;
  18.                                 }else{
  19.                                         System.out.println(s.toUpperCase());
  20. //                                        清空数据
  21.                                         stb.delete(0, stb.length());
  22.                                 }
  23.                         }else{
  24.                                 stb.append((char)ch);
  25.                         }
  26.                 }
  27.                
  28.         }
复制代码
  1. /**
  2.          * 需求:接收键盘输入,将输入字符转成大写并按回车输出
  3.          * 当输入over时程序退出
  4.          * 性能提升:用InputStreamReader进行转换成字符流
  5.          * 再能过缓冲区读取
  6.          * InputStreamReader 是字节流通向字符流的桥梁
  7.          * @throws Exception
  8.          * @since JDK 1.6
  9.          */
  10.         public void sysInTest2() throws Exception {
  11. //                先接收键盘录入
  12.                 InputStream in = (InputStream)System.in;
  13. //                创建一个转化流,把字节流转换成字符流
  14.                 InputStreamReader red = new InputStreamReader(in);
  15. //                创建字符流缓冲区,为提高读取效率
  16.                 BufferedReader bfr = new BufferedReader(red);
  17.                
  18.                 String stb = null;
  19.                
  20.                 while((stb = bfr.readLine()) != null){
  21.                         if("over".equals(stb)){
  22.                                 bfr.close();
  23.                                 System.exit(0);
  24.                         }
  25.                         System.out.println(stb.toUpperCase());
  26.                 }
  27.                
  28.                
  29.         }
复制代码


评分

参与人数 2技术分 +2 收起 理由
lwj123 + 1
杨佳名 + 1

查看全部评分

4 个回复

倒序浏览
public class test4 {
public static void main(String[] args) {
        while(true){
        Scanner s=new Scanner(System.in);
        String str=s.next();
        if(str.equals("over")){
                break;
        }
        System.out.println(str.toUpperCase());
        }
}
}
//这样好像就的了,不过是eclipse中.
回复 使用道具 举报
梁小刀11 发表于 2015-1-19 23:14
public class test4 {
public static void main(String[] args) {
        while(true){

这样写也是一样的,Scanner 是java.util包下的,也就是说它是一个工具类,取自该流的字节通过底层平台的默认字符集转换成字符。
回复 使用道具 举报
感觉好厉害= =,不过为啥要将System.in 强转呢?
回复 使用道具 举报
Lscreat 发表于 2015-1-20 10:14
感觉好厉害= =,不过为啥要将System.in 强转呢?

是不须要强转的,这里类型是一样的说明一下,开始编译器报了个错,clean了也不行,所以就转了一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马