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

未找到:真

從世界頂級大學在線學習軟件開發課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

例如,本博客中給出的代碼是目的,可以根據個人的需要進行修改。 如果您有興趣了解有關 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 從底層流中讀取字節並使用指定的字符集編碼將它們轉換為字符。 它是一個用於將字節流數據轉換為字符流數據的類。 字節流表示二進制數據,字符流表示文本。