首頁  >  文章  >  Java  >  Java中關於輸入資料的實作詳解

Java中關於輸入資料的實作詳解

黄舟
黄舟原創
2017-08-13 09:46:511215瀏覽

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中關於輸入資料的實作詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn