Scanner是Java中常用的一個類,主要用來接收用戶從控制台輸入的數據,或從文件中讀取數據。Scanner具有很多實用功能,本文將對Scanner進行全面解析。
一、Scanner的創建和基礎用法
在Java中創建Scanner,需要使用java.util包下的Scanner類。以下是Scanner的簡單示例:
import java.util.Scanner; public class TestScanner { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input = scanner.nextLine(); System.out.println("您輸入的內容是:" + input); } }
在上面的例子中,我們首先導入了Scanner類,然後創建了一個Scanner對象。接下來使用Scanner的nextLine()方法來接收控制台輸入的數據,並將其存儲到一個字元串變數中,最後輸出存儲的字元串變數。
Scanner還提供了許多其他方法,它們允許我們以不同的方式讀取輸入數據,如next()、nextInt()、nextDouble()等等。您可以根據您的需要選擇合適的方法。
二、Scanner的分隔符和定界符
使用Scanner讀取輸入時,默認情況下空格、製表符和換行符都被視為分隔符。不過,這些分隔符可能會與我們需要讀取的數據一起輸入,從而導致錯誤。Scanner提供了兩種方法來處理這種情況:分隔符和定界符。
分隔符是Scanner將輸入分解為單詞的字元序列。默認的分隔符是空格、製表符和換行符,但您可以使用useDelimiter()方法來自定義分隔符。以下是一個示例:
import java.util.Scanner; public class TestScanner { public static void main(String[] args) { Scanner scanner = new Scanner("Java Python C++"); scanner.useDelimiter("\\s+"); while (scanner.hasNext()) { System.out.println(scanner.next()); } } }
在上面的代碼片段中,我們創建了一個Scanner對象,並使用useDelimiter()方法將空格視為分隔符。此外,我們還使用了一個示例字元串作為輸入,並使用了hasNext()和next()方法來逐個讀取輸入。運行該程序將輸出以下內容:
Java Python C++
定界符是Scanner在讀取輸入時使用的字元序列之前和之後的字元。默認情況下,定界符為空(即只使用分隔符)。您可以使用useDelimiter()方法來指定定界符。以下是一個示例:
import java.util.Scanner; public class TestScanner { public static void main(String[] args) { Scanner scanner = new Scanner("name:Tom--age:18"); scanner.useDelimiter("--"); while (scanner.hasNext()) { System.out.println(scanner.next()); } } }
在上面的代碼片段中,我們創建了一個Scanner對象,並使用useDelimiter()方法將”–“視為定界符。然後我們使用hasNext()和next()方法來逐個讀取輸入。運行該程序將輸出以下內容:
name:Tom age:18
三、Scanner的錯誤處理
在讀取輸入時,可能會發生許多錯誤。比如,輸入可能會超出了預期的範圍,或者輸入可能不符合所需的格式。Scanner提供了多種方法來處理這些錯誤,這裡我們介紹一些常用的方法。
首先,Scanner提供了hasNextXxx()和nextXxx()方法,它們可以幫助我們檢查輸入是否符合所需格式,並讀取符合格式的輸入。例如,如果我們想讀取一個整數,我們可以使用hasNextInt()和nextInt()方法。以下是一個示例:
import java.util.Scanner; public class TestScanner { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("請輸入一個整數:"); while (!scanner.hasNextInt()) { System.out.println("輸入錯誤,請重新輸入:"); scanner.next(); } int input = scanner.nextInt(); System.out.println("您輸入的整數是:" + input); } }
在上面的代碼片段中,我們首先提示用戶輸入一個整數,然後使用hasNextInt()方法來確定用戶是否輸入了一個整數。如果沒有,則提示用戶重新輸入。
其次,Scanner還提供了一些其他方法,如hasNextLine()、hasNextDouble()、hasNextBoolean()等等。它們的作用與hasNextInt()方法類似,可根據您的需求選擇使用。
四、Scanner讀取文件
除了讀取控制台輸入外,Scanner還可以讀取文件。要讀取文件,請在創建Scanner對象時將文件作為參數傳遞給Scanner構造函數。以下是一個示例:
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class TestScanner { public static void main(String[] args) { File file = new File("example.txt"); Scanner scanner = null; try { scanner = new Scanner(file); while (scanner.hasNext()) { System.out.println(scanner.nextLine()); } } catch (FileNotFoundException e) { System.out.println("文件不存在!"); } finally { scanner.close(); } } }
在上面的代碼片段中,我們創建了一個File對象,並在創建Scanner對象時將其傳遞給Scanner構造函數。然後我們使用hasNext()和nextLine()方法逐行讀取文件內容,並輸出到控制台。請注意使用了try-catch語句來捕獲FileNotFoundException異常,並使用finally語句來關閉Scanner對象。
五、Scanner的關閉
使用完Scanner後,應該使用其close()方法來關閉Scanner對象,以避免資源泄漏。在上面的示例代碼中,我們已經看到了如何關閉Scanner,這裡不再贅述。
Scanner是Java中非常實用的一個類,它可以方便地讀取用戶輸入,或從文件中讀取數據。通過本文的詳細介紹,您應該已經掌握了Scanner的基本用法和一些高級特性。如果您需要進行輸入操作的話,不要忘記使用Scanner!
原創文章,作者:ZMQW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/149521.html