java——Scnner()類下面有幾種方法呢?

2021-01-11 騰訊網

每天分享技術棧,破解工具等

一、Scnner類

Scnner類在java.util包中一個可以使用正則表達式來解析基本類型和字符串的簡單文本掃描器。public final class Scanner //final修飾。extends Object

implements Iterator

Scanner 使用分隔符模式將其輸入分解為標記,默認情況下該分隔符模式與空白匹配。然後可以使用不同的 next 方法將得到的標記轉換為不同類型的值。

例如,以下代碼使用戶能夠從 System.in 中讀取一個數:

再看一個例子,以下代碼使 long 類型可以通過 myNumbers 文件中的項分配:

掃描器還可以使用不同於空白的分隔符。下面是從一個字符串讀取若干項的例子:

輸出為:

1

2

red

blue

以下代碼使用正則表達式同時解析所有的 4 個標記,並可以產生與上例相同的輸出結果:

掃描操作可能被阻塞,而等待信息的輸入。

next() 和 hasNext() 方法及其基本類型 companion 方法(如 nextInt() 和 hasNextInt())首先跳過與分隔符模式匹配的輸入,然後嘗試返回下一個標記。在等待更多輸入時 hasNext 和 next 方法都可能阻塞。hasNext 方法是否阻塞與其相關的 next 方法是否阻塞無關。

findInLine(java.lang.String)、findWithinHorizon(java.lang.String, int) 和 skip(java.util.regex.Pattern) 方法的執行與分隔符模式無關。這些方法會嘗試匹配與輸入中的分隔符無關的指定模式,因此可用於分隔符無關的特殊環境中。在等待更多輸入時這些方法可能阻塞。

當某一掃描器拋出 InputMismatchException 時,該掃描器不會傳遞導致該異常的標記,因此可以通過其他某種方法來獲取或跳過它。

對於某些類型的分隔模式,可能返回空標記。例如,"\\s+" 模式不會返回空標記,因為它與該分隔符的多個實例匹配。而分隔模式 "\\s" 可能返回空標記,因為它一次只傳遞一個空格。

掃描器可以從實現 Readable 接口的任何對象讀取文本。如果對底層 readable 的 Readable.read(java.nio.CharBuffer) 方法的調用拋出 IOException,則掃描器認為已經到達了輸入的結尾。底層 readable 最新拋出的 IOException 可以通過 ioException() 方法獲取。

如果 Scanner 關閉,且其輸入源實現 Closeable 接口,則該輸入源也將關閉。

若沒有外部同步,則 Scanner 的多線程使用是不安全的。

除非另行說明,否則將一個 null 參數傳遞到 Scanner 的任何一個方法中都將拋出 NullPointerException。

默認情況下掃描器會將數字解釋為十進位形式,除非已經使用 useRadix(int) 方法設置了不同的基數。不管以前是否更改,reset() 方法將把掃描器的基數重置為10 。

構造方法:

構造一個新的 Scanner,它生成的值是從指定源掃描的。

參數:

source -實現 Readable 接口的字符源

構造一個新的 Scanner,它生成的值是從指定的輸入流掃描的。取自該流的字節通過底層平臺的默認字符集轉換成字符。

參數:

source -要掃描的輸入流

構造一個新的 Scanner,它生成的值是從指定的輸入流掃描的。來自該流的字節通過指定字符集轉換成字符。

參數:

source -要掃描的輸入流

charsetName - 用於將來自該流的字節轉換成要掃描的字符的編碼類型

拋出:

IllegalArgumentException - 如果指定字符集不存在

構造一個新的 Scanner,它生成的值是從指定文件掃描的。來自該文件的字節通過底層平臺的默認字符集轉換成字符。

參數:

source -要掃描的文件

拋出:

FileNotFoundException - 如果源文件未找到

構造一個新的 Scanner,它生成的值是從指定文件掃描的。來自該文件的字節通過指定字符集轉換成字符。

參數:

source -要掃描的文件

charsetName - 用於將來自該文件的字節轉換成要掃描的字符的編碼類型

拋出:

FileNotFoundException - 如果源文件未找到

IllegalArgumentException - 如果指定的編碼未找到

構造一個新的 Scanner,它生成的值是從指定字符串掃描的。

參數:

source -要掃描的字符串

構造一個新的 Scanner,它生成的值是從指定信道掃描的。來自該源的字節通過底層平臺的默認字符集轉換成字符。

參數:

source -要掃描的信道

構造一個新的 Scanner,它生成的值是從指定信道掃描的。來自該源的字節通過指定字符集轉換成字符。

參數:

source -要掃描的信道

charsetName - 用於將來自該信道的字節轉換成要掃描的字符的編碼類型

拋出:

IllegalArgumentException - 如果指定字符集不存在

「在看」

相關焦點

  • 我要告訴你:java接口中可以定義private私有方法
    在傳統的Java編程中,被廣為人知的一個知識點是:java Interface接口中不能定義private私有方法。只允許我們定義public訪問權限的方法、抽象方法或靜態方法。但是從Java 9 開始,Interface 接口中允許定義私有方法和私有靜態方法。下面我們就來為大家介紹其語法規則,和為什麼要有這樣的設計。
  • java中static, final, 內部類的具體運用
    static概念:static它是靜態修飾符,一般用來修飾類中的成員。當在定義類的時候,類中都會有相應的屬性和方法。而屬性和方法都是通過創建本類對象調用的。static特點:static是靜態修飾符,一般修飾成員。被static修飾的成員屬於類,不屬於單個這個類的某個對象。
  • java集合詳解合集
    所以的集合類都位於java.util包下,後來為了處理多線程環境下的並發安全問題,java5還在java.util.concurrent包下提供了一些多線程支持的集合類。在學習Java中的集合類的API、編程原理的時候,我們一定要明白,"集合"是一個很古老的數學概念,它遠遠早於Java的出現。
  • Java基礎教程:Java包裝類概念及應用
    >Integer類概述包裝一個對象中的原始類型 int 的值Integer類構造方法及靜態方法示例代碼publicvalueOf方法包裝對象---->基本數值int num = i.intValue();自動裝箱與自動拆箱由於我們經常要做基本類型與包裝類之間的轉換,從Java 5(JDK 1.5)開始,基本類型與包裝類的裝箱、拆箱動作可以自動完成。
  • Java基礎面試題簡單總結
    >答:java中的保留字,現在沒有在java中使用11、數組有沒有length()這個方法?Overloaded的方法是可以改變返回值的類型13、Set裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別答:Set裡的元素是不能重複的,那麼用iterator()方法來區分重複與否。
  • Java中ItemEvent的使用方法
    1:ItemEvent事件源:選擇框,下拉列表都可以觸發ItemEvent事件2:註冊監視器:ItemListener樓口作為監視器事件源addI temListener (ItemListener listen)將實現Itemli stener接口的類的實例註冊為事件源的監視器
  • Java | 第一個 SpringBoot 工程詳解
    項目目錄由上圖項目目錄,可以看到有幾個文件,這些文件有些是我新建的,有些是項目生成的。下面我會講解:pom.xml 這個文件是整個項目最重要的文件,它包含了整個項目的依賴包。需要注意的是,這個類必須放在其他類的上冊目錄,拿上述目錄舉個慄子, 若其他HelloWorldController.java 類位於 com.nasus.controller 下。則 HelloworldApplication.java 類必須放置在 com.nasus 下或者 com 下(層級必須大於其他 java 類)。
  • 這個類在Java裡,是和亞當夏娃一樣的存在
    用代碼證明:①getClass():得到類名。②getSuperClass():得到父類名。③Class是指類,java.lang這是Java裡面的一個包,類名是Object。所以數組的父類也就是Object.。如果一個類沒有特別指定父類,那麼默認繼承自Object類。
  • 「JAVA」屬性、路徑分隔符有何不同?file對象創建,文件過濾器
    為解決這個問題,Java 在java.io.File類中提供了兩類常量,分別來表示路徑分隔符和屬性分隔符,官方源碼如下所示:java.io包中,包中有提供大量的I/O操作的api,但這一切的基礎是File類,File 這個名字既可以表示一個特定的文件,也可以表示一個目錄(目錄下有多個文件)。
  • Java之final關鍵字詳解
    final關鍵字用法修飾類當用final去修飾一個類的時候,表示這個類不能被繼承。注意:a. 被final修飾的類,final類中的成員變量可以根據自己的實際需要設計為fianl。b. final類中的成員方法都會被隱式的指定為final方法。
  • Java 訪問權限控制:你真的了解 protected 關鍵字嗎?
    看下面例子:package java.lang;public class MyObject {    public static void main(String[] args) throws CloneNotSupportedException {        Object o = new Object();        System.out.println
  • java集合【6】——— Iterable接口
    內部定義的方法 java集合最源頭的接口,實現這個接口的作用主要是集合對象可以通過迭代器去遍歷每一個元素。下面我們分別展示三個接口的調用:1.1  iterator()方法iterator()方法,是接口中的核心方法,主要是獲取迭代器,獲取到的iterator有next(),hasNext(),remove()等方法。
  • Kotlin VS Java:基本語法差異
    之間的差異,對於使用java開發android的大牛們來說可以做個基本的比較。        正如你所看到的,我們在這裡有相同的空檢查。 JetBrains的開發人員(創建Kotlin)知道每次檢查我們的變量是避免NullPointerException的唯一方法。
  • Java:如何更優雅地處理空值?
    此篇文章,我總結了幾種關於空值的處理手法,希望對讀者有幫助。Optional不要作為參數如果你寫了一個public方法,這個方法規定了一些輸入參數,這些參數中有一些是可以傳入null的,那這時候是否可以使用Optional呢?我給的建議是: 一定不要這樣使用!
  • 拋棄 Java 改用 Kotlin 的六個月後,我後悔了!
    看看下面這個方法:fun inc(num : Int) {    val num = 2    if (num > 0) {        val num = 3    }    println ("num: " + num)}當你調用 inc(1) 會輸出什麼呢?
  • Java中的 "弱" 引用有啥用?
    在實際開發中,我們可以通過把所有指向某個對象的referece置空來保證這個對象在下次GC運行的時候被回收,類似下面:Object c = new Car();      c=null; 但是,這樣做是一件很繁瑣並且違背GC自動回收原則的事。
  • 「原創」為什麼java中一切都是對象,還要有static?
    有了類的定義,我們就可以用類來描述世上任何東西。然而,有一個特殊的東西不屬於對象,它就是static。既然各個對象中都存在同樣的數據,那麼何不將這些相同的數據單獨拿出來並且單獨存放呢?2.static的使用場景在《Java編程思想》有這樣一段話:「static方法就是沒有this的方法。在static方法內部不能調用非靜態方法,反過來是可以的。而且可以在沒有創建任何對象的前提下,僅僅通過類本身來調用static方法。這實際上正是static方法的主要用途。」
  • [博客更新]Java 中 final 關鍵詞的使用
    上一篇文章我們講了 java 中 static 關鍵字的使用,這裡再將一下 final 關鍵字的使用。final 在 java 中可以看做一個「終結者」,它可以定義類、定義方法和定義變量。當定義類的時候,該類不能被繼承當定義方法的時候,該方法不能被子類覆蓋(Override)當定義變量的時候,該變量只能在定義的時候初始化,後期不能做改變,即變為一個常量。
  • 造紙廢水處理的主要方法有幾種呢?
    造紙業是能源和化工原料消耗高、用水量大、對環境汙染嚴重的行業,由於造紙業廢水排放量大,造紙廢水處理的主要方法有哪幾種呢?造紙生產過程包括製漿、漂白、洗滌和造紙,主要汙染物來製漿廢水。造紙廢水主要處理方法有理化處理方法:重力沉降法、氣浮、絮凝、化學氧化法、還原法、高級氧化工藝 AOPs、吸附法。
  • Java 枚舉(enum) 詳解7種常見的用法
    在java中如何更好的使用這些「數據集」呢?因此枚舉便派上了用場,以下代碼詳細介紹了枚舉的用法。JDK1.5引入了新的類型——枚舉。在 Java 中它雖然算個「小」功能,卻給我們的開發帶來了「大」方便。在JDK1.5 之前,我們定義常量都是: public static fianl.... 。