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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张亮 中级黑马   /  2012-4-3 14:06  /  1618 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张亮 于 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){}                                                                     
                                                                                            
}                                                                                          
                                                                                            
}                                                                                          


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













































1 个回复

倒序浏览
本帖最后由 格式化 于 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;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马