Scanner工具類

掃描控制臺輸入

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()?等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44044.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44044.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44044.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼隨想錄day09 151.翻轉字符串里的單詞 、卡碼網:55.右旋轉字符串

代碼隨想錄day09 151.翻轉字符串里的單詞 、卡碼網:55.右旋轉字符串 151. 反轉字符串中的單詞 這題我直接想到的是istringstream 和 stack 但不知道這樣使用是不是違反了規定 class Solution { public:string reverseWords(string s) {istringstream iss(s);stri…

MySQL的約束鍵多表查詢

約束 概念 概念:約束是作用于表中字段上的規則,用于限制存儲在表中的數據。目的:保證數據中數據的正確、有效性和完整性。 外鍵約束 概念 ? 外鍵用來讓兩張表的數據之間建立連接,從而保證數據的一致性和完整性。 注意&#x…

Qt常用基礎控件總結—輸入部件(QComboBox類和QLineEdit)

輸入部件 下拉列表控件QComboBox 類 QComboBox 類是 QWidget 類的直接子類,該類實現了一個下拉列表(組合框)。 QComboBox 類中的屬性函數 1)count:const int 訪問函數:int count() const; 獲取組合框中的項目數量,默認情況下,對于空組合框或未設置當前項目的組合框,…

網絡安全法視角下的等保測評法律責任與風險控制

《網絡安全法》是中國為了保障網絡安全、維護網絡空間主權和國家安全、社會公共利益,保護公民、法人和其他組織的合法權益而制定的一部重要法律。該法于2017年6月1日正式實施,其中對網絡安全等級保護制度(簡稱“等保”)做出了明確…

windows USB 設備驅動開發-USB復合設備的注冊

USB 多功能設備的驅動程序(稱為復合驅動程序)可以向基礎 USB 驅動程序堆棧注冊和注銷復合設備。 Microsoft 提供的驅動程序(Usbccgp.sys)是由 Windows 加載的默認復合驅動程序。 本文中的過程適用于替換Usbccgp.sys的基于 WDM的自…

c語言的簡易教法—— 函數遞歸

文章目錄 一、什么是遞歸?1.1遞歸的思想1.2遞歸的限制條件 二、遞歸案例2.1 案例1:求n的階層2.1.1分析2.1.2 遞歸函數(Fact)的代碼實現2.1.3 測試:main函數實現2.1.4 運行結果和畫圖推演2.1.5 擴展:迭代方法…

【66個開源+44個閉源Agent項目】

開源AI?Agent 1.AgentGPT 基于瀏覽器的 AutoGPT 實現,可通過無代碼平臺訪問。https://agentgpt.reworkd.ai/zh 2.AI Legion 一個讓智能體協同工作的平臺,其類似于 AutoGPT 和 Baby AGI,但用 TypeScript 編寫。https://github.com/eumemi…

如何使用BERT進行下游任務 - Transformer教程

BERT,即Bidirectional Encoder Representations from Transformers,是谷歌于2018年發布的預訓練語言模型。BERT的出現標志著自然語言處理領域的一個重要里程碑,因為它大幅提高了多種語言任務的性能。本文將詳細介紹如何使用BERT進行下游任務&…

華為如何做成數字化轉型?

目錄 企業數字化轉型是什么? 華為如何定義數字化轉型? 為什么做數字化轉型? 怎么做數字化轉型? 華為IPD的最佳實踐之“金蝶云” 企業數字化轉型是什么? 先看一下案例,華為經歷了多次戰略轉型&#xf…

前端工程化:Webpack配置全攻略

前端工程化:Webpack配置全攻略 前端小伙伴們,今天我們來聊聊那個讓人又愛又恨的 Webpack。沒錯,就是那個配置起來讓你想砸鍵盤,但又離不開它的構建工具。別擔心,跟著我來,保證讓你從 Webpack 小白變成配置…

人臉識別與檢測(保姆級教程--附帶源碼)

人臉識別與檢測(保姆級教程–附帶源碼) 項目背景 因項目需要招聘了一些日結工人,因此需要對工地現場的工人進行考勤管理,但工地只有海康攝像頭沒有專業考勤設備,因此需要基于視頻流開發人臉識別與檢測功能&#xff1…

Windows 虛擬機服務器項目部署

目錄 一、部署JDK下載JDK安裝JDK1.雙擊 jdk.exe 安裝程序2.點擊【下一步】3.默認安裝位置,點擊【下一步】4.等待提取安裝程序5.默認安裝位置,點擊【下一步】6.等待安裝7.安裝成功,點擊【關閉】 二、部署TomcatTomcat主要特點包括:…

奇怪的錯誤記錄

https://github.com/meta-llama/llama3/issues/80 讀模型沒問題,推理時出現: RuntimeError: “triu_tril_cuda_template” not implemented for ‘BFloat16’ ———————————————— 事發原因 我嘗試了解transformers的AutoProcessor時&a…

感應觸摸芯片集成為MCU,深度應用觸控按鍵技術的VR眼鏡

VR(Virtual Reality)即虛擬現實,簡稱VR,其具體內涵是綜合利用計算機圖形系統和各種現實及控制等接口設備,在計算機上生成的、可交互的三維環境中提供沉浸感覺的技術。它的工作原理是將左右眼圖像交互顯示在屏幕上的方式…

技術速遞|宣布為 .NET 升級助手提供第三方 API 和包映射支持

作者:Marco Goertz 排版:Alan Wang .NET 升級助手是一個 Visual Studio 擴展和命令行工具,可幫助您將應用從之前的 .NET 和 .NET Framework 升級到最新版本的 .NET。正如我們在之前的文章中所描述的那樣,它為升級 Microsoft 庫和框…

技術總結(1)——方向與成長思考

不知不覺已經發了30篇技術博客,本來最開始想的是回顧自己的技術生涯,怎樣做到失敗的生涯,但是后面發現,開始逐步寫技術博客,慢慢的開始沉浸里面這種回顧技術的感覺。做技術的人通常不喜歡研究市場,而做市場…

模型剪枝知識點整理

模型剪枝知識點整理 剪枝是深度學習模型優化的兩種常見技術,用于減少模型復雜度和提升推理速度,適用于資源受限的環境。 剪枝(Pruning) 剪枝是一種通過移除模型中不重要或冗余的參數來減少模型大小和計算量的方法。剪枝通常分為…

編程是學什么:探索編程世界的四大核心領域

編程是學什么:探索編程世界的四大核心領域 在數字化時代的浪潮中,編程已成為一項重要的技能。但很多人對于編程的學習內容仍然感到困惑,那么,編程究竟是學什么呢?本文將從四個方面、五個方面、六個方面和七個方面&…

探索TASKCTL和 DataStage 的ETL任務調度協同

在復雜多變的企業環境中,高效、準確的數據處理是支撐業務決策與運營的核心。本文將深入探討任務調度平臺TASKCTL與ETL工具DataStage的深度融合,通過詳盡的代碼示例、結合細節以及實際案例的具體描述,展示這兩個工具如何攜手打造企業數據處理生…

Xcode構建設置自定義:打造個性化的編譯環境

標題:Xcode構建設置自定義:打造個性化的編譯環境 在軟件開發過程中,根據不同的開發階段和需求,經常需要調整編譯設置以優化構建過程。Xcode作為蘋果官方的集成開發環境(IDE),提供了豐富的自定義…