我們在使用Java寫代碼時,經常會遇到從鍵盤輸入字符串等操作,這時候我們需要用到的是我們的Scanner類來實現獲取用戶從鍵盤上的輸入操作。
Scanner類是一個基於正則表達式的文本掃描器,它可以從文件,輸入流,字符串解析出基本類型值和字符串值。Scanner同時也提供了多個構造器,用於接收文件,輸入流,字符串。
當我們引入Scanner這個類的時候,我們需要導入:import java.util.Scanner;這個包
本篇文檔主要是通過介紹3中Scanner執行的操作類型
(1).Scanner提供了兩種方法來掃描輸入,這兩種方法分別是:hasnextXXX(),nextXXX()
hasnextXXX():表示是否還有下一個輸入項,其中XXX可以用來表示int,long,double,等代表基本數據類型的字符串。注意的是,如果我們只是判斷下一個輸入的內容是不是字符串,那么我們可以直接使用hasnext()。
nextXXX():獲取用戶輸入的項,使用nextXXX()就代表了用戶輸入的數據已經被顯示在IDE上。XXX的含義與上文的含義相同。
接下來舉一個例子來實現這兩個方法的操作:
public class test { public static void main(String[] args) throws FileNotFoundException { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); //這句話代表了創建一個Scanner的實例對象,這個對象可以為用戶提供輸入,注意new Scanner(System.in) while(sc.hasNext()){ System.out.println("輸入想要輸入的內容"+sc.next()); //以空格為分隔符 } } }
得到的最終結果如下:
上面的這個程序,是我們得到的最終結果,它表示用戶輸入字符串,在IDE上直接顯示用戶的輸入,但是我們需要注意的是,當我輸入12 32的時候,該程序會有兩行輸入,因為我們使用的方法是以空格為分隔符的,當我們使用空格的時候,自動的變成兩個字符串輸入。
(2).Scanner類為了方便,提供了兩個方法進行逐行的讀取(相當於以回車為分隔符)。這兩種方法分別是:boolean hasNextLine(),String nextLine()。
boolean hasNextLine():返回輸入源中是否還有下一行。
String nextLine():返回輸入源中下一行的字符串。
我們也舉一個例子來實現這兩個方法,用來與上述方法進行比較:
public class test { public static void main(String[] args) throws FileNotFoundException { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("輸入想要輸入的內容"); while(sc.hasNextLine()){ System.out.println("這一段是我輸入的內容:"+sc.nextLine()); } } }
上述代碼,我們最終得到的結果是:
通過觀察上面的結果,可以知道,空格符已經不是分隔符,只有當我們使用回車換行的時候,該方法才執行下一次的輸入。
(3).Scanner類的構造器還提供了一種可以讀取文件的輸入。該方法只需要在創建Scanner對象時傳入一個File對象作為參數,就可以讓Scanner讀取文件的內容。(IO流之后可能會專門做一篇文檔詳細說明,這里暫且知道即可。)
代碼的實現如下:
首先,我在我的D盤建一個文件夾1.txt,該文件夾的內容如下:
通過執行下面的代碼:
public class test { public static void main(String[] args) throws FileNotFoundException { // TODO Auto-generated method stub // //讀取文件中的內容 Scanner sc = new Scanner(new File("D:\\1.txt")); //注意這個地方,Scanner在創建對象的時候傳入了File對象作為參數,這個File對象就是我們文件的路徑 while(sc.hasNextLine()){ System.out.println(sc.nextLine()); } } }
上述代碼得到的最終結果:
與前文我們文件中所寫的內容相同。
以上這三種Scanner類使用的方式在Java初期基本OK(至少目前我只用過這三個,文件的輸入基本沒用過),如果后續我還使用了Scanner類的某些方法,我會在寫一篇后續~
為了我們共同進步,我這里有計算機專業的各種視頻,
如果想要,關注我的公眾號:念流聲。私聊我,看到后給你連接(只放了一張圖片,視頻有很多,需要什么可以私聊問我,有的話就給你)。