讀取鍵盤輸入---字節流


鍵盤是一個標准的輸入設備,java對於這種輸入設備都有對應的對象。

public static void readKey() throws IOException {
        
//如果輸入字符a然后回車輸入,輸入的其實是三個字節,in.read()每次只讀一個字節。

        InputStream in = System.in;
        
        int ch = in.read();//阻塞式方法。        
        System.out.println(ch);//97
        int ch1 = in.read();//阻塞式方法。        
        System.out.println(ch1);//13
        int ch2 = in.read();//阻塞式方法。        
        System.out.println(ch2);//10
        
//        in.close();// system.in 及out隨系統而來,隨系統而去,最好不要手動的去關,一旦關了后,就再也用不了了,
        
//        InputStream in2 = System.in;
//        int ch3 = in2.read();
        
    } 

 

public static void readKey2() throws IOException {
        
        /*
         * 獲取用戶鍵盤錄入的數據,
         * 並將數據變成大寫顯示在控制台上,
         * 如果用戶輸入的是over,結束鍵盤錄入。
         * 
         * 思路:
         * 1,因為鍵盤錄入只讀取一個字節,要判斷是否是over,需要將讀取到的字節拼成字符串。
         * 2,那就需要一個容器。StringBuilder.
         * 3,在用戶回車之前將錄入的數據變成字符串判斷即可。 
         * 
         */
        
        //1,創建容器。
        StringBuilder sb = new StringBuilder();
        
        //2,獲取鍵盤讀取流。        
        InputStream in = System.in;
        
        //3,定義變量記錄讀取到的字節,並循環獲取。         
        int ch = 0;
        
        while((ch=in.read())!=-1){
            
//            在存儲之前需要判斷是否是換行標記 ,因為換行標記不存儲。 
            if(ch=='\r')
                continue;
            if(ch=='\n'){
                String temp = sb.toString();
                if("over".equals(temp))
                    break;
                System.out.println(temp.toUpperCase());
                sb.delete(0, sb.length());
            }
            else
            //將讀取到的字節存儲到StringBuilder中。
            sb.append((char)ch);
            
//            System.out.println(ch);
        }
        
    }

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com