您好,你控制台输入数据是没有末尾的,电脑不知道你输入完这一句是不是还要输入下一句话,所以会在哪里一直等待接受新的数据。。你可以在里面加一个判断。当输入“over” 的时候,程序退出。你的char[] cs=new char[2];改大点以便于可以装下你定义的结束符。
例如
char[] cs=new char[1024]; //建议更改
while((len=reader1.read(cs))!=-1){ //为什么会卡在这个循环跳不出去!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if(new String(cs,0,len)=="over")//如果一次接收到的是“over”四个字符,则break退出循环。
break;
buf.append(new String(cs,0,len));
}
java中read方法返回的int类型:如果返回char, 那么无法表示流末尾. char的取值范围是从0到65535。这个范围内的所有字符, 都有可能在数据中出现。需要使用一个不可能在数据中出现的值来表示流末尾。那么Java中就是用-1来表示这个末尾的, 因为-1不会在数据中出现。而为了返回-1, 那么只能用int。当流中读取到一个字符时, read()方法内部就会当作int返回, 如果读到流末尾, 直接返回-1。