掃描
編程I/O通常涉及轉換人們喜歡使用的整齊格式的數據,為了幫助你完成這些工作,Java平臺提供了兩個API,掃描器API將輸入分解為與數據位相關聯的單個標記,格式化API將數據組裝成格式良好、可讀的形式。
Scanner類型的對象對于將格式化輸入分解為標記并根據其數據類型轉換單個標記非常有用。
將輸入分解為標記默認情況下,掃描器使用空格分隔標記(空格字符包括空格、制表符和行終止符,有關完整列表,請參閱Character.isWhitespace的文檔),要了解掃描的工作原理,讓我們看看ScanXan,這是一個讀取xanadu.txt中單個單詞并打印出來的程序,每行一個單詞。
import java.io.*; import java.util.Scanner; public class ScanXan { public static void main(String[] args) throws IOException { Scanner s = null; try { s = new Scanner(new BufferedReader(new FileReader("xanadu.txt"))); while (s.hasNext()) { System.out.println(s.next()); } } finally { if (s != null) { s.close(); } } } }
請注意,ScanXan在使用掃描器對象完成后會調用Scanner的close方法,即使掃描器不是流,你也需要將其關閉以指示你已完成其底層流。
ScanXan的輸出如下所示:
In Xanadu did Kubla Khan A stately pleasure-dome ...
要使用其他標記分隔符,請調用useDelimiter(),指定正則表達式,例如,假設你希望標記分隔符為逗號,可選地后跟空格,你會調用:
s.useDelimiter(",s*");轉換單個標記
ScanXan示例將所有輸入標記視為簡單的String值,Scanner還支持所有Java語言的原始類型(char除外)的標記,以及BigInteger和BigDecimal,此外,數值可以使用數千個分隔符。因此,在美國語言環境中,Scanner將字符串“32,767”正確地讀取為一個整數值。
我們必須提到語言環境,因為千位分隔符和小數符號是特定于語言環境的,因此,如果我們未指定掃描器應使用美國語言環境,則以下示例將無法在所有語言環境中正常運行。這通常不必擔心,因為你的輸入數據通常來自使用相同語言環境的源,但是這個例子是Java教程的一部分,并且分布在世界各地。
ScanSum示例讀取double值列表并將其相加,這是源碼:
import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; import java.util.Scanner; import java.util.Locale; public class ScanSum { public static void main(String[] args) throws IOException { Scanner s = null; double sum = 0; try { s = new Scanner(new BufferedReader(new FileReader("usnumbers.txt"))); s.useLocale(Locale.US); while (s.hasNext()) { if (s.hasNextDouble()) { sum += s.nextDouble(); } else { s.next(); } } } finally { s.close(); } System.out.println(sum); } }
這是示例輸入文件usnumbers.txt。
8.5 32,767 3.14159 1,000,000.1
輸出字符串是“1032778.74159”,在某些語言環境中,句點將是不同的字符,因為System.out是PrintStream對象,并且該類不提供重寫默認語言環境的方法,我們可以覆蓋整個程序的語言環境 — 或者我們可以只使用格式化,如下一個主題格式化中所述。
上一篇:緩沖流 下一篇:格式化流文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72964.html
摘要:典型示例以下結構是比較推薦的組織方式,所有的類和其他都在之下。應用主類,該類直接位于下。默認情況下,的應用主類會自動掃描以及所有子包下的所有類來進行初始化。 Spring Boot框架本身并沒有對工程結構有特別的要求,但是按照最佳實踐的工程結構可以幫助我們減少可能會遇見的坑,尤其是Spring包掃描機制的存在,如果您使用最佳實踐的工程結構,可以免去不少特殊的配置工作。 典型示例 以下結...
摘要:剛開始學習的時候,可能是一頭霧水,不知道從何學起。這個教程總體來說就像列文虎克教學,細到極致,妙到毫巔。適合絕對零基礎的,每個知識點掰開了揉碎了講解。 剛開始學習java的時候,可能是一頭霧水,不知道從何學起。還有很多Java小白,在剛自學Java的時候玩命的學習,玩命的記住Java原理,天天早上五點起床背Java的一些英...
摘要:一背景筆者月份在慕課網錄制視頻教程跨站漏洞加強安全里面需要講到很多實戰案例,在漏洞挖掘案例中分為了手工挖掘工具挖掘代碼審計三部分內容手工挖掘篇參考地址為快速找出網站中可能存在的漏洞實踐一本文主要記錄利用安全工具進行漏洞挖掘部分,分為了設置代 一、背景 筆者6月份在慕課網錄制視頻教程XSS跨站漏洞 加強Web安全,里面需要講到很多實戰案例,在漏洞挖掘案例中分為了手工挖掘、工具挖掘、代碼審...
摘要:咱媽說別亂點鏈接之淺談攻擊閱讀掘金作者馬達編輯迷鹿馬達,精通開發開發,擅長接口設計以及平臺化建設,獨自主導過多個產品。一題目購物應用分環境要求安全學習資料匯總掘金安全學習資料匯總安全學習網站收集 咱媽說別亂點鏈接之淺談 CSRF 攻擊 - 閱讀 - 掘金作者 | 馬達編輯 | 迷鹿 馬達, 精通PHP開發、Web開發,擅長api接口設計以及平臺化建設,獨自主導過多個Web產品。目前就職...
閱讀 2122·2021-11-22 15:24
閱讀 2410·2021-09-09 11:53
閱讀 3037·2021-09-04 16:40
閱讀 1636·2019-08-30 15:52
閱讀 3355·2019-08-29 13:47
閱讀 2735·2019-08-26 17:40
閱讀 1541·2019-08-26 13:24
閱讀 2245·2019-08-26 12:01