黑马程序员技术交流社区

标题: IO流问题,请教高手解答 [打印本页]

作者: 张亮    时间: 2012-4-3 14:06
标题: IO流问题,请教高手解答
本帖最后由 张亮 于 2012-4-3 14:13 编辑

public class ReadConsole2 {                                                                 
                                                                                            
        public static void main(String[] args) {                                                  
                                                                                            
                //数组缓冲                                                                              
                                                                                                        
                byte[] b = new byte[1024];                                                              
                                                                                            
                //有效数据个数                                                                          
                                                                                                        
                int n = 0;                                                                              
                                                                                                        
                try{                                                                                    
                        while(true){                                                                          
                                                                                                        
                //提示信息                                                                              
                                                                                            
                        System.out.println("请输入:");                                                      
                                                                                            
                //读取数据                                                                              
                                                                                                              
                        n = System.in.read(b);                                                               
                                                                                            
                //转换为字符串                                                                          
                                                                                            
                        String s = new String(b,0,n-2); //将n-2改为n,在控制台输入quit,程序不能退出。         
                                                                                            
                //判断是否是 quit                                                                       
                                                                                            
                        if(s.equalsIgnoreCase("quit")){                                                      
                                                                                                                   
                                break;  //结束循环                                                                  
                                                                                                              
                        }                                                                                    
                                                                                            
                //回显内容                                                                              
                                                                                            
                        System.out.println("输入内容为:" + s);                                               
                                                                                            
                }                                                                                       
                                                                                            
        }catch(Exception e){}                                                                     
                                                                                            
}                                                                                          
                                                                                            
}                                                                                          


问题在红色文字部分。没弄明白这是为什么。请教高手解答














































作者: 陈苓    时间: 2012-4-3 14:56
本帖最后由 格式化 于 2012-4-3 15:03 编辑

  你自定义了数组缓冲区,如果n不减2那么程序就为true一直在等待读取,不会为false所以就不能退出.
        
  自定义缓冲区应该这样;阅读性强

BufferedReader bufIn = new BufferedReader(new InputStreamReader(System.in));
                               
                String line = null;
               
                while((line=bufIn.readLine())!=null){
                       
                        if("over".equals(line))
                                break;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2