java如何輸入數據

Java程序開發過程當中,須要從鍵盤獲取輸入值是常有的事,但Java它恰恰就沒有像c語言給咱們提供的scanf(),C++給咱們提供的cin()獲取鍵盤輸入值的現成函數!Java沒有提供這樣的函數也不表明遇到這種狀況咱們就一籌莫展,請你看如下三種解決方法吧: 
如下將列出幾種方法:
方法一:從控制檯接收一個字符,而後將其打印出來
import java.io.*;
public static void main(String [] args) throws IOException{ 
         System.out.print("Enter a Char:"); 
         char i = (char) System.in.read(); 
         System.out.println("your char is :"+i); 
雖然此方式實現了從鍵盤獲取輸入的字符,可是System.out.read()只能針對一個字符的獲取,同時,獲取進來的變量的類型只能是char,當咱們輸入一個數字,但願獲得的也是一個整型變量的時候,咱們還得修改其中的變量類型,這樣就顯得比較麻煩。
 
方法二:從控制檯接收一個字符串,而後將其打印出來。 在這個題目中,咱們須要用到BufferedReader類和InputStreamReader類
import java.io.*;
public static void main(String [] args) throws IOException{ 
           BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
           String str = null; 
           System.out.println("Enter your value:"); 
           str = br.readLine(); 
           System.out.println("your value is :"+str); 
}
這樣咱們就能獲取咱們輸入的字符串。
 
方法三:這種方法我認爲是最簡單,最強大的,就是用Scanner類
import java.util.Scanner;
public static void main(String [] args) { 
         Scanner sc = new Scanner(System.in); 
         System.out.println("請輸入你的姓名:"); 
         String name = sc.nextLine(); 
         System.out.println("請輸入你的年齡:"); 
         int age = sc.nextInt(); 
         System.out.println("請輸入你的工資:"); 
         float salary = sc.nextFloat(); 
         System.out.println("你的信息以下:"); 
         System.out.println("姓名:"+name+"\n"+"年齡:"+age+"\n"+"工資:"+salary); 
}
這段代碼已經代表,Scanner類無論是對於字符串仍是整型數據或者float類型的變量,只需作一點小小的改變,就可以實現功能!無疑他是最強大的!
 
可是,在使用第三種輸入方法的時候有一個須要注意的地方,就是nextLine()函數,在io包中有一個和他功能同樣的函數我next()函數,他們的功能同樣,可是在實現上有什麼差異呢,請看下面代碼:
public static void main(String [] args) { 
         Scanner sc = new Scanner(System.in); 
         System.out.println("請輸入你的年齡:"); 
         int age = sc.nextInt(); 
         System.out.println("請輸入你的姓名:"); 
         String name = sc.nextLine(); 
         System.out.println("請輸入你的工資:"); 
         float salary = sc.nextFloat(); 
         System.out.println("你的信息以下:"); 
         System.out.println("姓名:"+name+"\n"+"年齡:"+age+"\n"+"工資:"+salary); 
}
這段代碼和上邊第三種實現輸入方法給出的例子代 碼區別在於,這段代碼先執行nextInit()再執行nextLine(),而第三種方法的例子是先執行nextLine(),再執行 nextInit(),當你在運行着兩段代碼的時候你會發現第三種方法的例子能夠實現正常的輸入,而這段代碼卻在輸入年齡,敲擊enter鍵後,跳過了輸 入姓名,直接到了輸入工資這裏,(能夠本身運行代碼看看)這是爲何呢?其實,在執行nextInit()函數以後,敲擊了enter回車鍵,回車符會被 nextLine()函數吸取,其實是執行了nextLine()函數吸取了輸入的回車符(並非沒有執行nextLine函數),前面講到和 nextLine()功能同樣的函數next(),他們的區別就在於:next()函數不會接收回車符和tab,或者空格鍵等,因此在使用 nextLine()函數的時候,要注意敲擊的回車符有個被其吸取,致使程序出現BUG!!!
 
最後小小的總結一下next()和nextLine()的區別:

在java中,next()方法是不接收空格的,在接收到有效數據前,全部的空格或者tab鍵等輸入被忽略,如有有效數據,則遇到這些鍵退出。nextLine()能夠接收空格或者tab鍵,其輸入應該以enter鍵結束。java

相關文章
相關標籤/搜索