Scanner類詳解

Scanner類用於獲取鍵盤輸入(是一個基於正則表達式的文本掃描器),它能夠從文件、字符串、輸入流中解析出基本類型值和字符串值。Scanner類提供了多個構造器,不一樣的構造器能夠接收文件、字符串和輸入流做爲數據源,用於從文件、字符串和輸入流中解析數據。html

Scanner類主要提供了兩個方法來掃描輸入:
1)hasNextXx():是否還有下一個輸入項,其中Xxx能夠是Int、Long等表明基本數據類型的字符串。若是隻是判斷是否包含下一個字符串,則直接使用hasNext()。java

2)nextXxx():獲取下一個輸入項。Xxx的含義同上。正則表達式

默認狀況下,Scanner使用空白(包括空格、Tab空白和回車)做爲多個輸入項的分隔符。微信

下面程序使用Scanner來得到用戶的鍵盤輸入:spa

 

public class Test{
    public static void main(String[] args){
        //System.in表明鍵盤輸入
        Scanner sc = new Scanner(System.in);
        //下面這行代碼是把回車做爲分隔符
        sc.useDelimiter("\n");
    //判斷是否還有下一個輸入項
        while(sc.hasNext()){
            //輸出輸入項
            System.out.println("鍵盤輸入的內容是:"+sc.next());    
        }
    }
}

 運行上面的程序,程序會經過Scanner不斷的從鍵盤讀取鍵盤輸入,而後打印到控制檯,程序運行效果以下:code

java
鍵盤輸入的內容是:java
c++
鍵盤輸入的內容是:c++
html
鍵盤輸入的內容是:html

爲Scanner設置分隔符使用 useDelimiter(String pattern)方法便可,該方法的參數是一個正則表達式(後面發佈內容會介紹到),若是把上面程序這一行sc.useDelimiter("\n")註釋掉,該程序就會把鍵盤的每行輸入當成一個輸入項,不會以空格、Tab空白或回車等做爲分隔符。htm

其實,Scanner提供了兩個簡單的逐行讀取的方法:對象

1)boolean hasNextLine():返回輸入源中是否還有下一行。blog

2)String nextLine():返回輸入源中下一行的字符串。字符串

Scanner除了能夠獲取字符串輸入項以外,還能夠獲取任意基本類型的輸入項,以下程序:

public class Test{
    public static void main(String[] args){
        //System.in表明鍵盤輸入
        Scanner sc = new Scanner(System.in);
        //判斷是否還有下一個long型整數
        while(sc.hasNextLong()){
            //輸出輸入項
            System.out.println("鍵盤輸入的內容是:"+sc.nextLong());    
       }
    }
}

上面程序經過hasNextLong()和nextLong()兩個方法能夠直接獲取輸入的Long型整數,若是須要獲取其它基本類型的輸入項,則能夠用相同的方法。

Scanner除了能讀取鍵盤輸入外,還能夠讀取文件輸入。只要在建立Scanner對象時傳入一個File對象做爲參數便可,例以下面的示例:

public class Test{
    public static void main(String[] args) throws Exception{
        //Scanner讀取文件內容:將一個File對象做爲Scanner的構造器參數
        Scanner sc = new Scanner(new File("Test.java"));
      System.out.println("Test.java文件內容以下:");
      //判斷是否還有下一行
      while(sc.hasNextLine()){
         //輸出文件的下一行
          System.out.println(sc.nextLine());    
      }
    }
}

上面程序由於涉及IO讀取,可能引起IO異常,因此程序聲明throws Exception代表main方法不處理任何異常。

 

歡迎關注微信公衆號【Java典籍】,收看更多Java技術乾貨!

  ▼微信掃一掃下圖↓↓↓二維碼關注

 

相關文章
相關標籤/搜索