掃描控制臺輸入
1.nextLine
? ?nextLine()
?方法會掃描輸入流中的字符,直到遇到行末尾的換行符?\n
,然后將該行的內容作為字符串返回,同時,nextLine()
?會將 Scanner 對象的位置移動到下一行的開頭,以便下一次讀取數據時從下一行的開頭開始讀取。
Scanner scanner = new Scanner(System.in); // 創建 Scanner 對象,從標準輸入流中讀取數據
System.out.println("請輸入多行文本,以空行結束:");
StringBuilder sb = new StringBuilder(); // 創建 StringBuilder 對象,用于保存讀取的文本
String line = scanner.nextLine(); // 讀取輸入流中的第一行
while (!line.isEmpty()) { // 如果讀取的行不為空,則繼續讀取下一行sb.append(line).append("\n"); // 將當前行的內容添加到 StringBuilder 對象中,并換行line = scanner.nextLine(); // 讀取下一行
}
System.out.println("您輸入的文本是:\n" + sb.toString()); // 打印讀取的文本
scanner.close(); // 關閉 Scanner 對象
2.nextInt
? ?nextInt()
?用于從輸入流中讀取下一個整數并返回,如果輸入流中沒有整數,或者不是整數,將拋出 InputMismatchException 異常。
3.其他方法
除了以上兩個常用的方法,Scanner 類中還有一些其他的方法:
boolean hasNext()
:檢查輸入流是否還有下一個標記。boolean hasNextLine()
:檢查輸入流是否還有下一行。String next()
:讀取輸入流中的下一個標記(使用默認的分隔符,通常是空格或換行符)。double nextDouble()
:讀取輸入流中的下一個雙精度浮點數。
Scanner scanner = new Scanner(System.in); // 創建 Scanner 對象,從標準輸入流中讀取數據
System.out.print("請輸入一個整數:");
if (scanner.hasNextInt()) { // 判斷輸入流中是否有下一個整數int num = scanner.nextInt(); // 讀取輸入流中的下一個整數System.out.println("您輸入的整數是:" + num);
} else {System.out.println("輸入的不是整數!");
}
scanner.nextLine(); // 讀取輸入流中的換行符System.out.print("請輸入多個單詞,以空格分隔:");
while (scanner.hasNext()) { // 判斷輸入流中是否還有下一個標記String word = scanner.next(); // 讀取輸入流中的下一個單詞System.out.println("您輸入的單詞是:" + word);
}
scanner.nextLine(); // 讀取輸入流中的換行符System.out.print("請輸入一個實數:");
if (scanner.hasNextDouble()) { // 判斷輸入流中是否有下一個實數double num = scanner.nextDouble(); // 讀取輸入流中的下一個實數System.out.println("您輸入的實數是:" + num);
} else {System.out.println("輸入的不是實數!");
}
scanner.nextLine(); // 讀取輸入流中的換行符System.out.print("請輸入一個字符串:");
if (scanner.hasNextLine()) { // 判斷輸入流中是否有下一行String line = scanner.nextLine(); // 讀取輸入流中的下一行System.out.println("您輸入的字符串是:" + line);
} else {System.out.println("輸入的不是字符串!");
}
scanner.close(); // 關閉 Scanner 對象
掃描文件
try {// 創建 File 對象,表示要掃描的文件File file = new File("docs/安裝環境.md");Scanner scanner = new Scanner(file); // 創建 Scanner 對象,從文件中讀取數據while (scanner.hasNextLine()) { // 判斷文件中是否有下一行String line = scanner.nextLine(); // 讀取文件中的下一行System.out.println(line); // 打印讀取的行}scanner.close(); // 關閉 Scanner 對象
} catch (FileNotFoundException e) {System.out.println("文件不存在!");
}
?????????在上面的示例中,我們首先創建了一個 File 對象,表示要掃描的文件。然后,我們使用 Scanner 類的構造方法來創建 Scanner 對象,將文件作為參數傳遞給構造方法。在 while 循環中,我們使用?hasNextLine()
?方法來判斷文件中是否有下一行,如果有,則使用?nextLine()
?方法讀取該行字符串,并使用?println()
?方法將其打印出來。最后,我們在程序結束前使用?close()
?方法關閉 Scanner 對象.
查找匹配項
?實例:
String input = "good good study, day day up.";
Scanner scanner = new Scanner(input);
String result;// 使用 findInLine() 方法查找字符串中的單詞
result = scanner.findInLine("study");
System.out.println("findInLine(): " + result); // 輸出 "study"// 使用 findWithinHorizon() 方法查找字符串中的單詞
scanner = new Scanner(input);
result = scanner.findWithinHorizon("study", 20);
System.out.println("findWithinHorizon(): " + result); // 輸出 "study"scanner.close(); // 關閉 Scanner 對象
????????在上面的示例中,我們首先創建了一個字符串 input,表示要查找的文本。然后,我們使用 Scanner 類的構造方法創建 Scanner 對象,并將 input 作為輸入流傳遞給該對象。接著,我們使用?findInLine()
?方法和?findWithinHorizon()
?方法分別查找字符串中的單詞 "study"。其中,findInLine()
?方法在當前行中查找匹配項,而?findWithinHorizon()
?方法在指定的限制范圍內查找匹配項。在本例中,我們將查找的范圍限制為前 20 個字符。
????????需要注意的是,findInLine()
?方法和?findWithinHorizon()
?方法都返回找到的匹配項。如果沒有找到匹配項,則返回 null。此外,findInLine()
?方法和?findWithinHorizon()
?方法都會忽略默認的分隔符,因此需要使用正則表達式來指定查找的模式。
小結
????????總之,Scanner 類是一個功能強大的輸入處理工具類,不僅可以掃描控制臺的輸入流,還可以掃描文件,并且提供了多種方法來讀取不同類型的數據,比如?next()
,?nextInt()
,?nextLine()
如,?nextDouble()
?等。