public static void main(String[] args) {
// TODO: Add your code here
byte [] buf=new byte[1024];
String strInfo=null;//对于在main方法中定义的对象必须进行显示的初始化
int pos=0;
int ch=0;
//System.out.println("please input sting:".indexOf('i',8));
System.out.println("please input string:".substring(6,8));
while(true)
{
try{ch=System.in.read();}
catch(Exception e){} //读取一个字节的内容
switch(ch)
{
case '\r':
break;
case '\n':
strInfo=new String(buf,0,pos);
if(strInfo.equals("bye"))
{
return;
}
else
{
System.out.println(strInfo);
pos=0;
break;
}
default:
buf[pos++]=(byte)ch;
}
}
}
大家看看我这个程序,我就是有一点弄不清楚,read()方法只能读取一个字节的内容,String(buf,0,pos)在程序中表面上没有与read()发生联系,为什么能形成一个字符串呢??
// TODO: Add your code here
byte [] buf=new byte[1024];
String strInfo=null;//对于在main方法中定义的对象必须进行显示的初始化
int pos=0;
int ch=0;
//System.out.println("please input sting:".indexOf('i',8));
System.out.println("please input string:".substring(6,8));
while(true)
{
try{ch=System.in.read();}
catch(Exception e){} //读取一个字节的内容
switch(ch)
{
case '\r':
break;
case '\n':
strInfo=new String(buf,0,pos);
if(strInfo.equals("bye"))
{
return;
}
else
{
System.out.println(strInfo);
pos=0;
break;
}
default:
buf[pos++]=(byte)ch;
}
}
}
大家看看我这个程序,我就是有一点弄不清楚,read()方法只能读取一个字节的内容,String(buf,0,pos)在程序中表面上没有与read()发生联系,为什么能形成一个字符串呢??
解决方案 »
- 集思广益求对策:如何用java程序判断一个格式化的日期?
- swing如何实现office右键那种风格?
- 一个不足10行的程序怎么就不是很正常呢?大家帮忙看看吧
- Vector、ArrayList和List的异同 哈希表
- 求高手指导下学习方向
- 关于struts标签的问题
- 还是中文问题,不过跟以前不一样。很怪就是找不到原因!
- 李煌老师重新思考计算代数
- java有什么容器可以实现这样的要求?在线等!
- [高分求救]Jbuilder7连接不上sqlserver,为什么,大家帮帮忙!
- 问个java调用windows的api函数的问题?!急啊!
- 有多个JTextField,如何判断在界面中鼠标选中的内容属于哪个TextField?
buf[pos++]=(byte)ch;
这里的ch就是read有关,而把ch放到了buf中,然后通过buf再生成字符串啊.
// TODO: Add your code here
byte [] buf=new byte[1024];
String strInfo=null;//对于在main方法中定义的对象必须进行显示的初始化
int pos=0;
int ch=0;
//System.out.println("please input sting:".indexOf('i',8));
System.out.println("please input string:".substring(6,8));
while(true)
{
try{ch=System.in.read();}
catch(Exception e){} //读取一个字节的内容
switch(ch)
{
case '\r': //如果输入的字符为'\r'不处理
break;
case '\n': //如果输入的字符为'\n'换行符
strInfo=new String(buf,0,pos); //这时buf中可能已经有了内容,default以下那句负责填充buf的内容
if(strInfo.equals("bye")) //如果输入的字符串即buf中的内容为"bye"
{
return; //从main中返回,即退出程序
}
else
{
System.out.println(strInfo); //输出buf中缓存的字符
pos=0;
break;
}
default: //如果输入的字符既不是'\n'或者'\r'的情况下
buf[pos++]=(byte)ch; //buf储存输入的字符,并将pos自增1
}
}
}
strInfo=new String(buf,0,pos); 这一句与read()的关系,还有pos , 一开始pos=0,在ch=System.in.read()后 为什么pos会自动累加??看default后面那句语句...