public class ReadLine{
public static void main(String[] args)
{
byte [] buf=new byte[1024];
String strInfo=null;
int pos=0;
int ch=0;
while(true)
{
try
{
ch=System.in.read();
}
catch(Exception e)
{
e.printStackTrace();
}
switch(ch)
{
case'\r':
break;
case'\n':
strInfo=new String(buf,0,pos);//什么意思?
if(strInfo=='bye')
{
return;
}
else
{
System.out.println(strInfo);
pos=0;
break;
}
default:
buf[pos++]=(byte)ch;
}
}
}
}我的编释器通不过,请问是哪里出得错?
顺便请注释下while里面的语句含义。
深表感谢!全分

解决方案 »

  1.   

    编译错误是:strInfo=='bye'strInfo是字符串类型,应用用双引号,不是单引号
      

  2.   


    public class ReadLine{
        public static void main(String[] args)
        {
            byte [] buf=new byte[1024];
            String strInfo=null;
            int pos=0;
            int ch=0;
            while(true)
            {
                try
                {
                    ch=System.in.read();
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
                switch(ch)
                {
                    case'\r':
                    break;
                    case'\n':
                    strInfo=new String(buf,0,pos);//取buf,0到pos出来形成字符串
                    if(strInfo=='bye')//字符是一个一个的,能这么写吗?改成"bye".equals(strInfo)
                    {
                        return;
                    }
                    else
                    {
                        System.out.println(strInfo);
                        pos=0;
                        break;
                    }
                    default:
                    buf[pos++]=(byte)ch;
                }
            }
        }
    }
      

  3.   

      if(strInfo=='bye')
    字符串必须要用equals()方法判断,而且字符串是""的