Java 中使用 Scanner 輸入多個字符串 [附編碼示例]
已發表: 2021-02-05目錄
介紹
在 java.util 包中,掃描器是幫助收集原始類型(如雙精度、整數、字符串等)的多個輸入的類之一。儘管它不是在時間起作用的 Java 程序中讀取輸入的有效方法作為一種約束,它無疑是從用戶那裡收集多個輸入的最簡單方法之一。 在本博客中,您將學習如何使用掃描器類在 Java 程序中收集用戶的多個字符串輸入。
使用 Scanner 獲取多個輸入的方法
在使用 Scanner 類之前,您必須在程序中導入 java.util 包。 下表列出了用於在 Java 程序中從用戶獲取不同類型的多個輸入的方法。
方法 | 輸入 |
下一個整數() | 整數 |
下一個浮動() | 漂浮 |
下一個雙() | 雙倍的 |
下一個長() | 長 |
下一個短() | 短的 |
下一個() | 一個字 |
下一行() | 字符串行 |
nextBoolean() | 布爾值 |
使用 Java nextLine() 方法
java.util.Scanner.nextLine() 方法返回通過將掃描儀推進到當前行而跳過的行。 如果在當前行的末尾給出了行分隔符,則此方法將其排除並從當前行返回字符串的其餘部分。 掃描儀設置在下一行開頭並讀取整個字符串,包括單詞的空格。
nextLine() 方法的語法如下:
公共字符串 nextLine()
此方法引發以下兩個異常:

- NoSuchElementException – 如果字符串為空或找不到行。
- IllegalStateException – 如果掃描儀已關閉。
例子
以下示例演示了 java.util.Scanner.nextLine() 方法如何收集來自用戶的多個輸入。
導入 java.util.Scanner; 公共類 SacnnerDemoMultipleString { 公共靜態無效主要(字符串 [] 參數) { 掃描儀演示 = 新掃描儀(System.in); System.out.print(“請輸入多個要打印的輸入:”); //接受一個整數輸入 String[] string = new String [demo.nextInt()]; // 使用上面輸入的 <enter> demo.nextLine(); for (int i = 0; i < string.length; i++) { 字符串[i] = demo.nextLine(); } System.out.println(“\n您輸入了以下內容:”); //for-each 循環打印字符串 for(字符串str:字符串) { System.out.println(str); // 關閉掃描儀 掃描儀.close(); } } } |
上面的程序將打印以下輸出
請輸入您要打印的多個輸入:7 米莎 哈利 羅伯特 哈維 吉爾 雷切爾 珍妮弗 您已輸入以下輸入: 米莎 哈利 羅伯特 哈維 吉爾 雷切爾 珍妮弗 |
使用 Java nextInt() 方法
java.util.Scanner.nextInt() 方法將用戶提供的輸入掃描為整數。 如果找到一個整數,則掃描儀會超過匹配的輸入。
nextInt() 方法的語法如下:
公共 int nextInt()
此方法拋出以下三個異常:
- InputMismatchException – 如果下一個標記與整數正則表達式不匹配,或者下一個標記超出範圍。
- NoSuchElementException – 如果輸入已用盡。
- IllegalStateException – 如果掃描儀已關閉。
例子
下面的示例演示 java.util.Scanner.nextInt() 方法如何收集來自用戶的多個輸入。
// Java 程序使用 Scanner 掃描整數 // 分類並打印它們的平均值。 導入 java.util.Scanner; ![]() 公共類 ScannerDemoInteger { 公共靜態無效主要(字符串 [] 參數) { 掃描儀演示 = 新掃描儀(System.in); // 初始化輸入元素的總和和計數 整數總和 = 0,計數 = 0; // 檢查是否存在整數值 而 (demo.hasNextInt()) { // 掃描一個整數值 int num = demo.nextInt(); 總和 += 數量; 計數++; } 整數平均值=總和/計數; System.out.println(“平均值:” + 平均值); } } |
上面的程序由以下輸入提供:
101 223 238 892 99 500 728 |
上面的程序將打印以下輸出:
平均值:397 |
另請閱讀:Java MVC 項目
使用 Java nextDouble() 方法
java.util.Scanner.nextDouble() 方法將用戶提供的輸入掃描為雙精度。 如果找到了一個浮點正則表達式,那麼掃描器就會超過匹配的輸入。
nextInt() 方法的語法如下:
公共雙 nextDouble()

此方法拋出以下三個異常:
- InputMismatchException – 如果下一個標記與浮點正則表達式不匹配,或者下一個標記超出範圍。
- NoSuchElementException – 如果輸入已用盡。
- IllegalStateException – 如果掃描儀已關閉。
例子
該示例演示了 java.util.Scanner.nextDouble() 方法如何收集來自用戶的多個輸入。
// Java 程序使用 Scanner 掃描浮點數 導入 java.util.Scanner; 公共類 ScannerDoubleRegularExpression { 公共靜態無效主要(字符串[]參數){ 字符串新 = “早上好! 3 + 3.0 = 6 真”; // 用指定的字符串對象寫一個新的掃描器對象 掃描儀演示 = 新掃描儀; // 使用美國語言環境能夠識別字符串中的雙精度 demo.useLocale(Locale.US); // 搜索下一個雙標記並打印 while (demo.hasNext()) { // 如果下一個是雙精度,則打印找到的浮點正則表達式 if (demo.hasNextDouble()) { System.out.println(“找到:” + demo.nextDouble()); } // 如果沒有找到雙正則表達式,打印“Not Found”和標記 System.out.println(“未找到:” + demo.next()); } // 關閉掃描儀 掃描儀.close(); } } |
上述程序將產生以下輸出:
未找到:好 未找到:早上! 找到:3.0 未找到:+ 找到:3.0 未找到:= 找到:6.0 未找到:真 |
結論
例如,本博客中給出的代碼是目的,可以根據個人的需要進行修改。 如果您有興趣了解有關 Java 和全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,提供 500 多個小時的嚴格培訓,9+項目和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。
Java 中的 Scanner 類是什麼?
Scanner 類允許您從鍵盤讀取值,而無需使用 Java 的控制台輸入。 Java 的控制台輸入很慢,它的重定向也很慢。 Scanner 更快更方便,所以應該使用 Scanner 來代替 Java 的控制台輸入。 Scanner 使用 Java 的常規輸入流,因此可以與其他解析器鏈接。 Scanner 也比 Java 的控制台輸入更容易使用。 Scanner 主要有 3 個子類,即 BufferedReader、InputStreamReader 和 FileReader。 最通用的是BufferedReader。 BufferedReader 可以讀取任何 InputStreamReader 可以讀取的內容,而且它有一個很大的優勢:緩衝區。 緩衝區一次可以容納一行。 輸入流根本沒有緩衝區:當您調用 next() 時,它會返回值。 這意味著您必須先收集這些值,然後才能對它們進行任何操作。 掃描儀為您完成。
Java 中的字符串生成器是什麼?
字符串生成器是一種用於創建字符串的新型類。 字符串生成器類是從 1.3 版本開始在 Java 中引入的。 它允許您通過連接多個字符串來創建一個字符串,並在您向其中添加更多字符串時自動調整其大小。 與字符串連接相比,使用字符串生成器更快、更靈活,但可讀性較差。 StringBuilder 對像是用於創建字符串值的對象。 StringBuilder 對像有許多方法。
Java 中的 InputStreamReader 是什麼?
InputStreamReader 從輸入流中讀取字符流並將其解碼為指定的字符編碼。 它提供了一種將字符流從一種編碼轉換為另一種編碼的簡單方法。 InputStreamReader 從底層流中讀取字節並使用指定的字符集編碼將它們轉換為字符。 它是一個用於將字節流數據轉換為字符流數據的類。 字節流表示二進制數據,字符流表示文本。