Java:在同一行讀取多個輸入
一、簡介
Scanner
類是 Java 中用於從控制台讀取輸入的有用工具。我們經常使用next()
或nextLine()
方法在單獨的行上讀取每個輸入。然而,有時我們可能希望在同一行讀取多個輸入。
在本教程中,我們將探討實現此目的的不同方法,例如使用空格或自定義分隔符,甚至是正則表達式。
2. 在同一行讀取多個輸入
要在同一行讀取多個輸入,我們可以使用Scanner
類以及next()
或nextLine()
方法。但是,如果我們使用定界符來分隔每個輸入,將會有所幫助。
2.1.使用空格作為分隔符
在同一行讀取多個輸入的一種方法是使用空格作為分隔符。這是一個例子:
Scanner scanner = new Scanner(System.in);
System.out.print("Enter two numbers: ");
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
System.out.println("You entered " + num1 + " and " + num2);
在此示例中,我們使用nextInt()
方法從控制台讀取兩個整數。由於我們在同一行讀取它們,因此我們使用空格作為分隔符來分隔兩個整數。
2.2.使用自定義分隔符
如果我們不想使用空格作為分隔符,我們可以通過調用Scanner
對像上的setDelimiter()
方法來使用自定義分隔符。這是一個例子:
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter(";");
System.out.print("Enter two numbers separated by a semicolon: ");
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
System.out.println("You entered " + num1 + " and " + num2);
在此示例中,我們使用分號代替空格作為分隔符。我們還調用setDelimiter()
方法將分隔符設置為分號。
2.3.使用正則表達式作為分隔符
除了使用空格或自定義分隔符外,我們還可以在讀取同一行的多個輸入時使用正則表達式作為分隔符。正則表達式是可以靈活而強大地匹配字符串的模式。
例如,如果我們想讀取同一行上的多個輸入,用空格或逗號分隔,我們可以使用以下代碼:
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter("[\\s,]+");
System.out.print("Enter two numbers separated by a space or a comma: ");
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
System.out.println("You entered " + num1 + " and " + num2);
我們使用正則表達式 [\\s,]+ 作為此示例中的分隔符。此正則表達式匹配一個或多個空格或逗號。
3.錯誤處理
在同一行讀取多個輸入時,處理可能發生的錯誤很重要。例如,如果用戶輸入無效輸入(例如String
而不是Integer
,程序將拋出異常。
為了處理這個錯誤,我們可以使用try-catch
塊來優雅地捕獲和處理異常。這是一個例子:
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter(";");
System.out.print("Enter two numbers separated by a semicolon: ");
try {
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
System.out.println("You entered " + num1 + " and " + num2);
} catch (InputMismatchException e) {
System.out.println("Invalid input. Please enter two integers separated by a semicolon.");
}
在此示例中,我們使用try-catch
塊來捕獲在用戶輸入無效輸入時可能拋出的InputMismatchException
。如果捕獲到此異常,我們將打印一條錯誤消息並要求用戶再次輸入。
4。結論
在本文中,我們討論如何使用Scanner
類讀取同一行上的多個輸入。
GitHub 上提供了完整的示例代碼。