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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马连家华 中级黑马   /  2012-5-13 21:17  /  2124 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马连家华 于 2012-8-13 17:22 编辑

import java.io.*;
class ReadIn
{
public static void main(String[] args) throws IOException
{
  //myReadIn();
  //输入over后停止程序
  readExitByOver();
}
public static void readExitByOver() throws IOException
{
  InputStream is = System.in;
  //定义一个容器
  StringBuffer sb = new StringBuffer();
  int buffer = 0;
  while (true)
  {
   buffer = is.read();
   if (buffer == '\r')
   {
    continue;
   }
   if (buffer == '\n')
   {
    if ("over".equals(sb.toString()))
    {     
     break;//可是这里都有一个break了,这里break了还能执行到下边的else?
    }
    System.out.println(sb.toString().toUpperCase());
    sb.delete(0,sb.length());
   }
   else//谁能告诉我为什么必须加这个else,差别太大了
    sb.append((char)buffer);
  }
  is.close();
}
//肿么办呐亲...我还是不懂

9 个回复

倒序浏览
不加 else的话,sb.append((char)buffer);
会连换行符也添加到sb中
回复 使用道具 举报
if (buffer == '\n')
   {
    if ("over".equals(sb.toString()))
         {     
         break;
         }
    System.out.println(sb.toString().toUpperCase());
    sb.delete(0,sb.length());
   }
   else//这个else是buffer == '\n'的else。
      sb.append((char)buffer);
  }
回复 使用道具 举报
因为你要用它向字符串缓冲区添加元素呀。
回复 使用道具 举报
如果不加else,哪能的到你想输出的东西。else后面跟的是一种情况。
回复 使用道具 举报

if (buffer == '\r')
   {
    continue;
   }
   if (buffer == '\n')
   {
    if ("over".equals(sb.toString()))
    {     
     break;
    }
    System.out.println(sb.toString().toUpperCase());
    sb.delete(0,sb.length());
   }
   else//谁能告诉我为什么必须加这个else,差别太大了
    sb.append((char)buffer);
加了else满足buffer == '\r'条件时就运行if中的语句,否则运行 sb.append((char)buffer);
如果不加else,无论满不满足if中的条件,都会运行 sb.append((char)buffer);
回复 使用道具 举报
查看50回复5,难道这就是有人说的不屑回答的经典战斗鸡贴?....这不是刷分贴...继续等
回复 使用道具 举报
好吧我知道了...查看这么多次是我自己一次次刷新造成的
回复 使用道具 举报
不加else,就不执行sb.append((char)buffer); 了,如果回车就打印内容。
回复 使用道具 举报
好吧,也许最近状态不好,,,看不懂,算了,我想以后会明白的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马