初學java時,或許大家都遇到過一個問題,從控制台獲取字符,大家最常見的便是通過System.in.read();取得輸入的字符,代碼如下:
public static void receiveOneChar(){//得到一個輸入的字符 char ch='2'; System.out.println("please enter a number:"); try { ch=(char)System.in.read(); } catch (IOException e) { e.printStackTrace(); } System.out.println("your entered char is:"+ch); }
但是該方法只能獲得一個輸入的字符,為了獲得更多的輸入字符,或者要實現a,b相加我們該如何實現呢?看下面:
我們知道,java中是以流進行輸入輸入的,其中System類管理基本輸入輸出流和錯誤流,
System.out 將流輸出到缺省位置
System.in 獲得輸入
System.err 輸出錯誤信息
每當main方法被執行時,系統會自動生成上述三各對象;
基本輸入流InputStream是個抽象類,它有如下方法供子類繼承:
read(); 從流中讀入數據;
skip();跳過流中若干各字節;
available();返回流中可用字節數;
mark();在流中標記一個位置;
reset();返回標記的位置;
markSupport();是否支持標記和復位操作;
close();關閉流;
其中,read()方法有三個版本;
int read();讀一個整數;
int read(byte[] b);讀多個字節到一個字節數組;
int read(byte[] b,int off,int len);從字節數組的某各位置讀取len長度的字節;
下面的程序利用int read(byte[] b);實現從控制台讀取多個字符;
public static void receiveSomeChar(){//通過字節數組得到輸入 byte btArray[]=new byte[128]; System.out.println("please Enter something:"); try { System.in.read(btArray); } catch (IOException e) { e.printStackTrace(); } System.out.println("your entering is:"+new String(btArray));//由字節數組構造String }
下面通過BufferedReader,InputStreamReader來獲得控制台輸入;
public static void receiveSomeCharByBufferedReader(){ System.out.println("please Enter something:"); InputStreamReader in=null; BufferedReader br=null; in=new InputStreamReader(System.in);//該處的System.in是各InputSream類型的; br=new BufferedReader(in); String str=""; try { str = br.readLine();//從輸入流in中讀入一行,並將讀取的值賦值給字符串變量str } catch (IOException e) { e.printStackTrace(); } System.out.println("your Entered is :"+str); }
好了,有了上面的基礎,我們來實現c語言中常見的輸入兩個整數,輸出兩者的和的問題,也就是上面說的a+b的問題;
且看下面的代碼:
public static void twoIntAdd(){ int one=0; int two=0; String temp=null; System.out.println("please enter the first integer:"); try { BufferedReader br1=new BufferedReader(new InputStreamReader(System.in)); temp=br1.readLine(); one=Integer.parseInt(temp); System.out.println("please enter the second integer:"); BufferedReader br2=new BufferedReader(new InputStreamReader(System.in)); temp=br2.readLine(); two=Integer.parseInt(temp); } catch (IOException e) { e.printStackTrace(); } System.out.println(one+"+"+two+"="+(one+two)); }
因為時間關系,沒有對輸入進行驗證,一旦輸入數據類型不對,整個程序將會出錯,細致入微的態度做程序時應該牢記。這裡暫且就不驗證了。