鴻蒙OS Scanner

2022-08-04 16:56 更新

Scanner

java.lang.Object

|---java.util.Scanner

public final class Scanner
extends Object
implements Iterator<String>, Closeable

一個(gè)簡單的文本掃描器,可以使用正則表達(dá)式解析原始類型和字符串。

Scanner 使用分隔符模式將其輸入分解為標(biāo)記,默認(rèn)情況下匹配空格。 然后可以使用各種 next 方法將生成的標(biāo)記轉(zhuǎn)換為不同類型的值。

例如,此代碼允許用戶從 System.in 中讀取一個(gè)數(shù)字:

     Scanner sc = new Scanner(System.in);
     int i = sc.nextInt();

作為另一個(gè)示例,此代碼允許從文件 myNumbers 中的條目分配長類型:

      Scanner sc = new Scanner(new File("myNumbers"));
      while (sc.hasNextLong()) {
          long aLong = sc.nextLong();
      }

掃描儀還可以使用除空格以外的分隔符。 此示例從字符串中讀取多個(gè)項(xiàng)目:

     String input = "1 fish 2 fish red fish blue fish";
     Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
     System.out.println(s.nextInt());
     System.out.println(s.nextInt());
     System.out.println(s.next());
     System.out.println(s.next());
     s.close();

打印以下輸出:

     1
     2
     red
     blue

使用此代碼可以生成相同的輸出,該代碼使用正則表達(dá)式一次解析所有四個(gè)標(biāo)記:

     String input = "1 fish 2 fish red fish blue fish";
     Scanner s = new Scanner(input);
     s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
     MatchResult result = s.match();
     for (int i=1; i<=result.groupCount(); i++)
         System.out.println(result.group(i));
     s.close();

掃描儀使用的默認(rèn)空白分隔符由 Character.isWhitespace 識別。 reset() 方法會將掃描儀的分隔符的值重置為默認(rèn)的空白分隔符,無論它之前是否已更改。

掃描操作可能會阻塞等待輸入。

next() 和 hasNext() 方法及其原始類型的伴隨方法(例如 nextInt() 和 hasNextInt())首先跳過與分隔符模式匹配的任何輸入,然后嘗試返回下一個(gè)標(biāo)記。 hasNext 和 next 方法都可能阻塞等待進(jìn)一步的輸入。 hasNext 方法是否阻塞與其關(guān)聯(lián)的 next 方法是否會阻塞沒有關(guān)系。

findInLine(java.lang.String)、findWithinHorizon(java.lang.String, int) 和 skip(java.util.regex.Pattern) 方法獨(dú)立于分隔符模式運(yùn)行。 這些方法將嘗試匹配指定的模式,而不考慮輸入中的分隔符,因此可以在分隔符不相關(guān)的特殊情況下使用。 這些方法可能會阻塞等待更多輸入。

當(dāng)掃描器拋出 InputMismatchException 時(shí),掃描器不會傳遞導(dǎo)致異常的令牌,以便可以通過其他方法檢索或跳過它。

根據(jù)分隔模式的類型,可能會返回空標(biāo)記。 例如,模式“\s+”將不返回空標(biāo)記,因?yàn)樗ヅ浞指舴亩鄠€(gè)實(shí)例。 定界模式“\s”可能會返回空標(biāo)記,因?yàn)樗淮沃粋鬟f一個(gè)空格。

掃描儀可以從任何實(shí)現(xiàn) Readable 接口的對象中讀取文本。 如果調(diào)用底層可讀的 Readable.read(java.nio.CharBuffer) 方法拋出 IOException 則掃描器假定已到達(dá)輸入的末尾。 底層可讀的最近拋出的 IOException 可以通過 ioException() 方法檢索。

當(dāng) Scanner 關(guān)閉時(shí),如果源實(shí)現(xiàn)了 Closeable 接口,它將關(guān)閉其輸入源。

如果沒有外部同步,掃描器對于多線程使用是不安全的。

除非另有說明,否則將 null 參數(shù)傳遞給 Scanner 的任何方法都會導(dǎo)致拋出 NullPointerException。

除非使用 useRadix(int) 方法設(shè)置了不同的基數(shù),否則掃描儀將默認(rèn)將數(shù)字解釋為十進(jìn)制。 reset() 方法會將掃描儀的基數(shù)的值重置為 10,無論它之前是否已更改。

本地化號碼

此類的一個(gè)實(shí)例能夠掃描標(biāo)準(zhǔn)格式以及掃描儀區(qū)域設(shè)置格式的數(shù)字。 掃描儀的初始語言環(huán)境是 Locale.getDefault(Locale.Category.FORMAT) 方法返回的值; 它可以通過 useLocale(java.util.Locale) 方法進(jìn)行更改。 reset() 方法會將掃描儀區(qū)域設(shè)置的值重置為初始區(qū)域設(shè)置,無論它之前是否已更改。

本地化格式是根據(jù)以下參數(shù)定義的,對于特定語言環(huán)境,這些參數(shù)取自該語言環(huán)境的 DecimalFormat 對象 df 及其和 DecimalFormatSymbols 對象 dfs。

LocalGroupSeparator

用于分隔數(shù)千組的字符,即 dfs.getGroupingSeparator()

LocalDecimalSeparator

用于小數(shù)點(diǎn)的字符,即 dfs.getDecimalSeparator()

LocalPositivePrefix

出現(xiàn)在正數(shù)之前的字符串(可能為空),即 df.getPositivePrefix()

LocalPositiveSuffix

出現(xiàn)在正數(shù)之后的字符串(可能為空),即 df.getPositiveSuffix()

LocalNegativePrefix

出現(xiàn)在負(fù)數(shù)之前的字符串(可能為空),即 df.getNegativePrefix()

LocalNegativeSuffix

出現(xiàn)在負(fù)數(shù)之后的字符串(可能為空),即 df.getNegativeSuffix()

LocalNaN

表示浮點(diǎn)值的非數(shù)字的字符串,即 dfs.getNaN()

LocalInfinity

表示浮點(diǎn)值無窮大的字符串,即 dfs.getInfinity()

Number syntax

可以由此類的實(shí)例解析為數(shù)字的字符串根據(jù)以下正則表達(dá)式語法指定,其中 Rmax 是所使用的基數(shù)中的最高數(shù)字(例如,Rmax 是基數(shù)為 10 的 9)。

非ASCII碼:

Character.isDigit(c) 為其返回 true 的非 ASCII 字符 c

非零位:

[1-Rmax] | 非ASCII數(shù)字

數(shù)字:

[0-Rmax] | 非ASCII數(shù)字

分組數(shù)字:

( Non0Digit Digit? Digit?

( LocalGroupSeparator Digit Digit Digit )+ )

數(shù)字:

( ( Digit+ ) | GroupedNumeral )

整數(shù):

( [-+]? ( Numeral ) )

| LocalPositivePrefix Numeral LocalPositiveSuffix

| LocalNegativePrefix Numeral LocalNegativeSuffix

十進(jìn)制數(shù)字:

數(shù)字

| Numeral LocalDecimalSeparator *Digit**

| LocalDecimalSeparator Digit+

指數(shù):

( [eE] [+-]? Digit+ )

十進(jìn)制:

( [-+]? DecimalNumeral Exponent? )

| LocalPositivePrefix DecimalNumeral LocalPositiveSuffix Exponent?

| LocalNegativePrefix DecimalNumeral LocalNegativeSuffix Exponent?

十六進(jìn)制浮點(diǎn)數(shù):

[-+]? 0xX*.[0-9a-fA-F]+ (pP?[0-9]+)?

非編號:

NaN | LocalNan | Infinity | LocalInfinity

簽名非號碼:

( [-+]? NonNumber )

| LocalPositivePrefix NonNumber LocalPositiveSuffix

| LocalNegativePrefix NonNumber LocalNegativeSuffix

浮點(diǎn)數(shù):

Decimal | HexFloat | SignedNonNumber

空格在上述正則表達(dá)式中并不重要

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
Scanner(File source) 構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定文件掃描的值。
Scanner(File source, String charsetName) 構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定文件掃描的值。
Scanner(InputStream source) 構(gòu)造一個(gè)新的 Scanner,它生成從指定輸入流掃描的值。
Scanner(InputStream source, String charsetName) 構(gòu)造一個(gè)新的 Scanner,它生成從指定輸入流掃描的值。
Scanner(Readable source) 構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定源掃描的值。
Scanner(String source) 構(gòu)造一個(gè)新的 Scanner,它生成從指定字符串掃描的值。
Scanner(ReadableByteChannel source) 構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定通道掃描的值。
Scanner(ReadableByteChannel source, String charsetName) 構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定通道掃描的值。
Scanner(Path source) 構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定文件掃描的值。
Scanner(Path source, String charsetName) 構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定文件掃描的值。

方法總結(jié)

修飾符和類型 方法 描述
void close() 關(guān)閉此掃描儀。
Pattern delimiter() 返回此掃描器當(dāng)前用于匹配分隔符的模式。
String findInLine(String pattern) 嘗試查找從指定字符串構(gòu)造的模式的下一個(gè)匹配項(xiàng),忽略分隔符。
String findInLine(Pattern pattern) 嘗試查找指定模式忽略分隔符的下一個(gè)匹配項(xiàng)。
String findWithinHorizon(String pattern, int horizon) 嘗試查找從指定字符串構(gòu)造的模式的下一個(gè)匹配項(xiàng),忽略分隔符。
String findWithinHorizon(Pattern pattern, int horizon) 嘗試查找指定模式的下一個(gè)匹配項(xiàng)。
boolean hasNext() 如果此掃描器在其輸入中有另一個(gè)標(biāo)記,則返回 true。
boolean hasNext(String pattern) 如果下一個(gè)標(biāo)記與從指定字符串構(gòu)造的模式匹配,則返回 true。
boolean hasNext(Pattern pattern) 如果下一個(gè)完整的標(biāo)記與指定的模式匹配,則返回 true。
boolean hasNextBigDecimal() 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextBigDecimal() 方法解釋為 BigDecimal,則返回 true。
boolean hasNextBigInteger() 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextBigInteger() 方法解釋為默認(rèn)基數(shù)中的 BigInteger,則返回 true。
boolean hasNextBigInteger(int radix) 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextBigInteger() 方法解釋為指定基數(shù)中的 BigInteger,則返回 true。
boolean hasNextBoolean() 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用從字符串“true|false”創(chuàng)建的不區(qū)分大小寫的模式解釋為布爾值,則返回 true。
boolean hasNextByte() 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextByte() 方法解釋為默認(rèn)基數(shù)中的字節(jié)值,則返回 true。
boolean hasNextByte(int radix) 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextByte() 方法解釋為指定基數(shù)中的字節(jié)值,則返回 true。
boolean hasNextDouble() 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextDouble() 方法解釋為雙精度值,則返回 true。
boolean hasNextFloat() 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextFloat() 方法解釋為浮點(diǎn)值,則返回 true。
boolean hasNextInt() 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextInt() 方法解釋為默認(rèn)基數(shù)中的 int 值,則返回 true。
boolean hasNextInt(int radix) 如果此掃描儀輸入中的下一個(gè)標(biāo)記可以使用 nextInt() 方法解釋為指定基數(shù)中的 int 值,則返回 true。
boolean hasNextLine() 如果此掃描儀的輸入中有另一行,則返回 true。
boolean hasNextLong() 如果此掃描儀輸入中的下一個(gè)標(biāo)記可以使用 nextLong() 方法解釋為默認(rèn)基數(shù)中的 long 值,則返回 true。
boolean hasNextLong(int radix) 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextLong() 方法解釋為指定基數(shù)中的 long 值,則返回 true。
boolean hasNextShort() 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextShort() 方法解釋為默認(rèn)基數(shù)中的短值,則返回 true。
boolean hasNextShort(int radix) 如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextShort() 方法解釋為指定基數(shù)中的短值,則返回 true。
IOException ioException() 返回此 Scanner 的底層 Readable 上次拋出的 IOException。
Locale locale() 返回此掃描儀的語言環(huán)境。
MatchResult match() 返回此掃描器執(zhí)行的最后一次掃描操作的匹配結(jié)果。
String next() 從此掃描器中查找并返回下一個(gè)完整的令牌。
String next(String pattern) 如果它與從指定字符串構(gòu)造的模式匹配,則返回下一個(gè)標(biāo)記。
String next(Pattern pattern) 如果它與指定的模式匹配,則返回下一個(gè)標(biāo)記。
BigDecimal nextBigDecimal() 將輸入的下一個(gè)標(biāo)記掃描為 BigDecimal。
BigInteger nextBigInteger() 將輸入的下一個(gè)標(biāo)記掃描為 BigInteger。
BigInteger nextBigInteger(int radix) 將輸入的下一個(gè)標(biāo)記掃描為 BigInteger。
boolean nextBoolean() 將輸入的下一個(gè)標(biāo)記掃描為布爾值并返回該值。
byte nextByte() 將輸入的下一個(gè)標(biāo)記掃描為一個(gè)字節(jié)。
byte nextByte(int radix) 將輸入的下一個(gè)標(biāo)記掃描為一個(gè)字節(jié)。
double nextDouble() 將輸入的下一個(gè)標(biāo)記掃描為雙精度。
float nextFloat() 將輸入的下一個(gè)標(biāo)記掃描為浮點(diǎn)數(shù)。
int nextInt() 將輸入的下一個(gè)標(biāo)記掃描為 int。
int nextInt(int radix) 將輸入的下一個(gè)標(biāo)記掃描為 int。
String nextLine() 將此掃描器前進(jìn)到當(dāng)前行并返回被跳過的輸入。
long nextLong() 將輸入的下一個(gè)標(biāo)記掃描為 long。
long nextLong(int radix) 將輸入的下一個(gè)標(biāo)記掃描為 long。
short nextShort() 將輸入的下一個(gè)標(biāo)記掃描為 short。
short nextShort(int radix) 將輸入的下一個(gè)標(biāo)記掃描為 short。
int radix() 返回此掃描儀的默認(rèn)基數(shù)。
void remove() Iterator 的此實(shí)現(xiàn)不支持刪除操作。
Scanner reset() 重置此掃描儀。
Scanner skip(String pattern) 跳過與從指定字符串構(gòu)造的模式匹配的輸入。
Scanner skip(Pattern pattern) 跳過與指定模式匹配的輸入,忽略分隔符。
String toString() 返回此 Scanner 的字符串表示形式。
Scanner useDelimiter(String pattern) 將此掃描儀的分隔模式設(shè)置為從指定字符串構(gòu)造的模式。
Scanner useDelimiter(Pattern pattern) 將此掃描儀的分隔模式設(shè)置為指定的模式。
Scanner useLocale(Locale locale) 將此掃描儀的語言環(huán)境設(shè)置為指定的語言環(huán)境。
Scanner useRadix(int radix) 將此掃描儀的默認(rèn)基數(shù)設(shè)置為指定的基數(shù)。
從接口 java.util.Iterator 繼承的方法
forEachRemaining
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

Scanner

public Scanner(Readable source)

構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定源掃描的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 實(shí)現(xiàn) Readable 接口的字符源

Scanner

public Scanner(InputStream source)

構(gòu)造一個(gè)新的 Scanner,它生成從指定輸入流掃描的值。 使用底層平臺的默認(rèn)字符集將流中的字節(jié)轉(zhuǎn)換為字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 要掃描的輸入流

Scanner

public Scanner(InputStream source, String charsetName)

構(gòu)造一個(gè)新的 Scanner,它生成從指定輸入流掃描的值。 流中的字節(jié)使用指定的字符集轉(zhuǎn)換為字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 要掃描的輸入流
charsetName 用于將流中的字節(jié)轉(zhuǎn)換為要掃描的字符的編碼類型

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果指定的字符集不存在

Scanner

public Scanner(File source) throws FileNotFoundException

構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定文件掃描的值。 使用底層平臺的默認(rèn)字符集將文件中的字節(jié)轉(zhuǎn)換為字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 要掃描的文件

Throws:

Throw名稱 Throw描述
FileNotFoundException 如果找不到 source

Scanner

public Scanner(File source, String charsetName) throws FileNotFoundException

構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定文件掃描的值。 使用指定的字符集將文件中的字節(jié)轉(zhuǎn)換為字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 要掃描的文件
charsetName 用于將文件中的字節(jié)轉(zhuǎn)換為要掃描的字符的編碼類型

Throws:

Throw名稱 Throw描述
FileNotFoundException 如果找不到 source
IllegalArgumentException 如果沒有找到指定的編碼

Scanner

public Scanner(Path source) throws IOException

構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定文件掃描的值。 使用底層平臺的默認(rèn)字符集將文件中的字節(jié)轉(zhuǎn)換為字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 要掃描的文件的路徑

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤打開源代碼

Scanner

public Scanner(Path source, String charsetName) throws IOException

構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定文件掃描的值。 使用指定的字符集將文件中的字節(jié)轉(zhuǎn)換為字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 要掃描的文件的路徑
charsetName 用于將文件中的字節(jié)轉(zhuǎn)換為要掃描的字符的編碼類型

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤打開源代碼
IllegalArgumentException 如果沒有找到指定的編碼

Scanner

public Scanner(String source)

構(gòu)造一個(gè)新的 Scanner,它生成從指定字符串掃描的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 要掃描的字符串

Scanner

public Scanner(ReadableByteChannel source)

構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定通道掃描的值。 使用底層平臺的默認(rèn)字符集將源中的字節(jié)轉(zhuǎn)換為字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 要掃描的頻道

Scanner

public Scanner(ReadableByteChannel source, String charsetName)

構(gòu)造一個(gè)新的 Scanner,它產(chǎn)生從指定通道掃描的值。 使用指定的字符集將源中的字節(jié)轉(zhuǎn)換為字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
source 要掃描的頻道
charsetName 用于將通道中的字節(jié)轉(zhuǎn)換為要掃描的字符的編碼類型

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果指定的字符集不存在

方法詳情

close

public void close()

關(guān)閉此掃描儀。

如果這個(gè)掃描器還沒有關(guān)閉,那么如果它的底層可讀也實(shí)現(xiàn)了 Closeable 接口,那么可讀的 close 方法將被調(diào)用。 如果此掃描儀已關(guān)閉,則調(diào)用此方法將無效。

在掃描程序關(guān)閉后嘗試執(zhí)行搜索操作將導(dǎo)致 IllegalStateException。

指定者:

在接口 AutoCloseable 中關(guān)閉

指定者:

在接口Closeable中關(guān)閉

ioException

public IOException ioException()

返回此 Scanner 的底層 Readable 上次拋出的 IOException。 如果不存在此類異常,則此方法返回 null。

返回:

此掃描儀可讀的最后一個(gè)異常

delimiter

public Pattern delimiter()

返回此掃描器當(dāng)前用于匹配分隔符的模式。

返回:

此掃描儀的分隔模式。

useDelimiter

public Scanner useDelimiter(Pattern pattern)

將此掃描儀的分隔模式設(shè)置為指定的模式。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 定界模式

返回:

這個(gè)掃描儀

useDelimiter

public Scanner useDelimiter(String pattern)

將此掃描儀的分隔模式設(shè)置為從指定字符串構(gòu)造的模式。

調(diào)用useDelimiter(pattern) 形式的此方法的行為方式與調(diào)用useDelimiter(Pattern.compile(pattern)) 完全相同。

調(diào)用 reset() 方法會將掃描儀的分隔符設(shè)置為默認(rèn)值。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 指定分隔模式的字符串

返回:

這個(gè)掃描儀

locale

public Locale locale()

返回此掃描儀的語言環(huán)境。

掃描儀的語言環(huán)境會影響其默認(rèn)原始匹配正則表達(dá)式的許多元素。

返回:

此掃描儀的語言環(huán)境

useLocale

public Scanner useLocale(Locale locale)

將此掃描儀的語言環(huán)境設(shè)置為指定的語言環(huán)境。

掃描儀的語言環(huán)境會影響其默認(rèn)原始匹配正則表達(dá)式的許多元素。

調(diào)用 reset() 方法會將掃描儀的語言環(huán)境設(shè)置為初始語言環(huán)境。

參數(shù):

參數(shù)名稱 參數(shù)描述
locale 指定要使用的語言環(huán)境的字符串

返回:

這個(gè)掃描儀

radix

public int radix()

返回此掃描儀的默認(rèn)基數(shù)。

掃描儀的基數(shù)會影響其默認(rèn)數(shù)字匹配正則表達(dá)式的元素; 請參閱上面的本地化數(shù)字。

返回:

此掃描儀的默認(rèn)基數(shù)

useRadix

public Scanner useRadix(int radix)

將此掃描儀的默認(rèn)基數(shù)設(shè)置為指定的基數(shù)。

掃描儀的基數(shù)會影響其默認(rèn)數(shù)字匹配正則表達(dá)式的元素。

如果基數(shù)小于 Character.MIN_RADIX 或大于 Character.MAX_RADIX,則拋出 IllegalArgumentException。

調(diào)用 reset() 方法會將掃描儀的基數(shù)設(shè)置為 10。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 掃描數(shù)字時(shí)使用的基數(shù)

返回:

這個(gè)掃描儀

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果基數(shù)超出范圍

match

public MatchResult match()

返回此掃描器執(zhí)行的最后一次掃描操作的匹配結(jié)果。 如果沒有執(zhí)行匹配,或者最后一次匹配不成功,則此方法拋出 IllegalStateException。

如果 Scanner 的各種 next 方法完成而沒有拋出異常,則可以使用匹配結(jié)果。 例如,在調(diào)用返回 int 的 nextInt() 方法后,此方法返回 MatchResult 以搜索上面定義的 Integer 正則表達(dá)式。 類似地,如果 findInLine(java.lang.String)、findWithinHorizon(java.lang.String, int) 和 skip(java.util.regex.Pattern) 方法成功,則匹配可用。

返回:

最后一次匹配操作的匹配結(jié)果

Throws:

Throw名稱 Throw描述
IllegalStateException 如果沒有匹配結(jié)果可用

toString

public String toString()

返回此 Scanner 的字符串表示形式。 Scanner 的字符串表示形式包含可能對調(diào)試有用的信息。 確切的格式未指定。

覆蓋:

類 Object 中的 toString

返回:

此掃描儀的字符串表示形式

hasNext

public boolean hasNext()

如果此掃描器在其輸入中有另一個(gè)標(biāo)記,則返回 true。 此方法可能會在等待輸入掃描時(shí)阻塞。 掃描儀不會超過任何輸入。

指定者:

接口 IteratorString 中的 hasNext

返回:

當(dāng)且僅當(dāng)此掃描儀有另一個(gè)令牌時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

next

public String next()

從此掃描器中查找并返回下一個(gè)完整的令牌。 一個(gè)完整的標(biāo)記前后是匹配分隔符模式的輸入。 此方法可能會在等待輸入掃描時(shí)阻塞,即使先前調(diào)用 hasNext() 返回 true。

指定者:

接口 IteratorString 中的下一個(gè)

返回:

下一個(gè)令牌

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果沒有更多可用的令牌
IllegalStateException 如果此掃描儀已關(guān)閉

remove

public void remove()

Iterator 的此實(shí)現(xiàn)不支持刪除操作。

指定者:

在接口 IteratorString 中移除

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果調(diào)用此方法。

hasNext

public boolean hasNext(String pattern)

如果下一個(gè)標(biāo)記與從指定字符串構(gòu)造的模式匹配,則返回 true。 掃描儀不會超過任何輸入。

對這種形式為 hasNext(pattern) 的方法的調(diào)用與調(diào)用 hasNext(Pattern.compile(pattern)) 的行為方式完全相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 指定要掃描的模式的字符串

返回:

當(dāng)且僅當(dāng)此掃描器具有與指定模式匹配的另一個(gè)標(biāo)記時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

next

public String next(String pattern)

如果它與從指定字符串構(gòu)造的模式匹配,則返回下一個(gè)標(biāo)記。 如果匹配成功,掃描器會前進(jìn)超過匹配模式的輸入。

調(diào)用 next(pattern) 形式的此方法的行為與調(diào)用 next(Pattern.compile(pattern)) 完全相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 指定要掃描的模式的字符串

返回:

下一個(gè)令牌

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果沒有此類令牌可用
IllegalStateException 如果此掃描儀已關(guān)閉

hasNext

public boolean hasNext(Pattern pattern)

如果下一個(gè)完整的標(biāo)記與指定的模式匹配,則返回 true。 完整的標(biāo)記由匹配分隔符模式的輸入添加前綴和后綴。 此方法可能會在等待輸入時(shí)阻塞。 掃描儀不會超過任何輸入。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 要掃描的模式

返回:

當(dāng)且僅當(dāng)此掃描器具有與指定模式匹配的另一個(gè)標(biāo)記時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

next

public String next(Pattern pattern)

如果它與指定的模式匹配,則返回下一個(gè)標(biāo)記。 即使先前調(diào)用 hasNext(java.util.regex.Pattern) 返回 true,此方法也可能在等待輸入掃描時(shí)阻塞。 如果匹配成功,掃描器會前進(jìn)超過匹配模式的輸入。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 要掃描的模式

返回:

下一個(gè)令牌

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果沒有更多可用的令牌
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextLine

public boolean hasNextLine()

如果此掃描儀的輸入中有另一行,則返回 true。 此方法可能會在等待輸入時(shí)阻塞。 掃描儀不會超過任何輸入。

返回:

當(dāng)且僅當(dāng)此掃描儀有另一行輸入時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

nextLine

public String nextLine()

將此掃描器前進(jìn)到當(dāng)前行并返回被跳過的輸入。 此方法返回當(dāng)前行的其余部分,不包括末尾的任何行分隔符。 位置設(shè)置為下一行的開頭。

由于此方法繼續(xù)搜索輸入以查找行分隔符,因此如果不存在行分隔符,它可能會緩沖所有搜索要跳過的行的輸入。

返回:

被跳過的行

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果沒有找到 line
IllegalStateException 如果此掃描儀已關(guān)閉

findInLine

public String findInLine(String pattern)

嘗試查找從指定字符串構(gòu)造的模式的下一個(gè)匹配項(xiàng),忽略分隔符。

對這種形式為 findInLine(pattern) 的方法的調(diào)用與調(diào)用 findInLine(Pattern.compile(pattern)) 的行為方式完全相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 指定要搜索的模式的字符串

返回:

與指定模式匹配的文本

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

findInLine

public String findInLine(Pattern pattern)

嘗試查找指定模式忽略分隔符的下一個(gè)匹配項(xiàng)。 如果在下一行分隔符之前找到該模式,則掃描程序會越過匹配的輸入并返回與該模式匹配的字符串。 如果在直到下一行分隔符的輸入中沒有檢測到這樣的模式,則返回 null 并且掃描儀的位置不變。 此方法可能會阻止等待與模式匹配的輸入。

由于此方法繼續(xù)搜索輸入以查找指定的模式,因此如果不存在行分隔符,它可能會緩沖所有輸入以搜索所需的標(biāo)記。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 要掃描的模式

返回:

與指定模式匹配的文本

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

findWithinHorizon

public String findWithinHorizon(String pattern, int horizon)

嘗試查找從指定字符串構(gòu)造的模式的下一個(gè)匹配項(xiàng),忽略分隔符。

對這種形式為 findWithinHorizon(pattern) 的方法的調(diào)用與調(diào)用 findWithinHorizon(Pattern.compile(pattern, horizon)) 的行為方式完全相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 指定要搜索的模式的字符串
horizon 搜索范圍

返回:

與指定模式匹配的文本

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉
IllegalArgumentException 如果 horizon 為負(fù)

findWithinHorizon

public String findWithinHorizon(Pattern pattern, int horizon)

嘗試查找指定模式的下一個(gè)匹配項(xiàng)。

此方法搜索輸入直到指定的搜索范圍,忽略分隔符。如果找到模式,則掃描程序會越過匹配的輸入并返回與模式匹配的字符串。如果沒有檢測到這樣的模式,則返回 null 并且掃描儀的位置保持不變。此方法可能會阻止等待與模式匹配的輸入。

掃描器永遠(yuǎn)不會搜索超出其當(dāng)前位置的水平代碼點(diǎn)。請注意,匹配可能會被 horizon 剪裁;也就是說,如果視野更大,任意匹配結(jié)果可能會有所不同。掃描儀將 horizon 視為透明的非錨定邊界。

如果 horizon 為0,則 horizon 被忽略,并且此方法繼續(xù)搜索輸入以尋找指定的模式而不受限制。在這種情況下,它可能會緩沖所有搜索模式的輸入。

如果 Horizon 為負(fù)數(shù),則拋出 IllegalArgumentException。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 要掃描的模式
horizon 搜索范圍

返回:

與指定模式匹配的文本

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉
IllegalArgumentException 如果 horizon 為負(fù)

skip

public Scanner skip(Pattern pattern)

跳過與指定模式匹配的輸入,忽略分隔符。 如果指定模式的錨定匹配成功,此方法將跳過輸入。

如果在當(dāng)前位置未找到與指定模式的匹配項(xiàng),則不跳過任何輸入并拋出 NoSuchElementException。

由于此方法試圖從掃描儀的當(dāng)前位置開始匹配指定的模式,因此可以匹配大量輸入(例如“.*”)的模式可能會導(dǎo)致掃描儀緩沖大量輸入。

請注意,通過使用不匹配任何內(nèi)容的模式(例如 sc.skip("[ \t]*")),可以跳過某些內(nèi)容而不會冒 NoSuchElementException 的風(fēng)險(xiǎn)。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 一個(gè)字符串,指定要跳過的模式

返回:

這個(gè)掃描儀

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果沒有找到指定的模式
IllegalStateException 如果此掃描儀已關(guān)閉

skip

public Scanner skip(String pattern)

跳過與從指定字符串構(gòu)造的模式匹配的輸入。

對這種形式為 skip(pattern) 的方法的調(diào)用與調(diào)用 skip(Pattern.compile(pattern)) 的行為方式完全相同。

參數(shù):

參數(shù)名稱 參數(shù)描述
pattern 一個(gè)字符串,指定要跳過的模式

返回:

這個(gè)掃描儀

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextBoolean

public boolean hasNextBoolean()

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用從字符串“true|false”創(chuàng)建的不區(qū)分大小寫的模式解釋為布爾值,則返回 true。 掃描儀不會超過匹配的輸入。

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)標(biāo)記是有效的布爾值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

nextBoolean

public boolean nextBoolean()

將輸入的下一個(gè)標(biāo)記掃描為布爾值并返回該值。 如果下一個(gè)標(biāo)記無法轉(zhuǎn)換為有效的布爾值,此方法將拋出 InputMismatchException。 如果匹配成功,則掃描儀會超過匹配的輸入。

回報(bào):

從輸入掃描的布爾值

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記不是有效的布爾值
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextByte

public boolean hasNextByte()

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextByte() 方法解釋為默認(rèn)基數(shù)中的字節(jié)值,則返回 true。 掃描儀不會超過任何輸入。

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)令牌是有效字節(jié)值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextByte

public boolean hasNextByte(int radix)

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextByte() 方法解釋為指定基數(shù)中的字節(jié)值,則返回 true。 掃描儀不會超過任何輸入。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 用于將標(biāo)記解釋為字節(jié)值的基數(shù)

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)令牌是有效字節(jié)值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

nextByte

public byte nextByte()

將輸入的下一個(gè)標(biāo)記掃描為一個(gè)字節(jié)。

調(diào)用 nextByte() 形式的此方法的行為與調(diào)用 nextByte(radix) 完全相同,其中 radix 是此掃描儀的默認(rèn)基數(shù)。

返回:

從輸入掃描的字節(jié)

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與整數(shù)正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

nextByte

public byte nextByte(int radix)

將輸入的下一個(gè)標(biāo)記掃描為一個(gè)字節(jié)。 如果下一個(gè)標(biāo)記無法轉(zhuǎn)換為如下所述的有效字節(jié)值,則此方法將拋出 InputMismatchException。 如果翻譯成功,掃描儀會超過匹配的輸入。

如果下一個(gè)標(biāo)記與上面定義的整數(shù)正則表達(dá)式匹配,則該標(biāo)記被轉(zhuǎn)換為字節(jié)值,就像通過刪除所有區(qū)域設(shè)置特定的前綴、組分隔符和區(qū)域設(shè)置特定的后綴,然后通過 Character#digit 將非 ASCII 數(shù)字映射到 ASCII 數(shù)字 , 如果存在特定于語言環(huán)境的負(fù)前綴和后綴,則在前面加上負(fù)號 (-),并將結(jié)果字符串傳遞給具有指定基數(shù)的 Byte#parseByte(String, int)。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 用于將標(biāo)記解釋為字節(jié)值的基數(shù)

返回:

從輸入掃描的字節(jié)

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與整數(shù)正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextShort

public boolean hasNextShort()

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextShort() 方法解釋為默認(rèn)基數(shù)中的短值,則返回 true。 掃描儀不會超過任何輸入。

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)標(biāo)記是默認(rèn)基數(shù)中的有效短值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextShort

public boolean hasNextShort(int radix)

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextShort() 方法解釋為指定基數(shù)中的短值,則返回 true。 掃描儀不會超過任何輸入。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 用于將標(biāo)記解釋為短值的基數(shù)

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)標(biāo)記是指定基數(shù)中的有效短值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

nextShort

public short nextShort()

將輸入的下一個(gè)標(biāo)記掃描為短標(biāo)記。

調(diào)用 nextShort() 形式的此方法的行為方式與調(diào)用 nextShort(radix) 完全相同,其中 radix 是此掃描儀的默認(rèn)基數(shù)。

返回:

從輸入掃描的 short

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與整數(shù)正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

nextShort

public short nextShort(int radix)

將輸入的下一個(gè)標(biāo)記掃描為短標(biāo)記。 如果下一個(gè)標(biāo)記無法轉(zhuǎn)換為有效的短值,則此方法將拋出 InputMismatchException,如下所述。 如果翻譯成功,掃描儀會超過匹配的輸入。

如果下一個(gè)標(biāo)記與上面定義的整數(shù)正則表達(dá)式匹配,則將標(biāo)記轉(zhuǎn)換為短值,就像通過刪除所有區(qū)域設(shè)置特定前綴、組分隔符和區(qū)域設(shè)置特定后綴,然后通過 Character#digit 將非 ASCII 數(shù)字映射為 ASCII 數(shù)字 , 如果存在特定于語言環(huán)境的負(fù)前綴和后綴,則在前面加上負(fù)號 (-),并將結(jié)果字符串傳遞給具有指定基數(shù)的 Short#parseShort(String, int)。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 用于將標(biāo)記解釋為短值的基數(shù)

返回:

從輸入掃描的 short

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與整數(shù)正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextInt

public boolean hasNextInt()

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextInt() 方法解釋為默認(rèn)基數(shù)中的 int 值,則返回 true。 掃描儀不會超過任何輸入。

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)標(biāo)記是有效的 int 值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextInt

public boolean hasNextInt(int radix)

如果此掃描儀輸入中的下一個(gè)標(biāo)記可以使用 nextInt() 方法解釋為指定基數(shù)中的 int 值,則返回 true。 掃描儀不會超過任何輸入。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 用于將標(biāo)記解釋為 int 值的基數(shù)

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)標(biāo)記是有效的 int 值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

nextInt

public int nextInt()

將輸入的下一個(gè)標(biāo)記掃描為 int。

調(diào)用 nextInt() 形式的此方法的行為方式與調(diào)用 nextInt(radix) 完全相同,其中 radix 是此掃描儀的默認(rèn)基數(shù)。

返回:

從輸入掃描的 int

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與整數(shù)正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

nextInt

public int nextInt(int radix)

將輸入的下一個(gè)標(biāo)記掃描為 int。 如果下一個(gè)標(biāo)記無法轉(zhuǎn)換為有效的 int 值,則此方法將拋出 InputMismatchException,如下所述。 如果翻譯成功,掃描儀會超過匹配的輸入。

如果下一個(gè)標(biāo)記與上面定義的 Integer 正則表達(dá)式匹配,則將標(biāo)記轉(zhuǎn)換為 int 值,就像通過刪除所有區(qū)域設(shè)置特定前綴、組分隔符和區(qū)域設(shè)置特定后綴,然后通過 Character#digit 將非 ASCII 數(shù)字映射為 ASCII 數(shù)字 ,如果存在特定于語言環(huán)境的負(fù)前綴和后綴,則在前面加上負(fù)號 (-),并將結(jié)果字符串傳遞給具有指定基數(shù)的 Integer#parseInt(String, int)。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 用于將標(biāo)記解釋為 int 值的基數(shù)

返回:

從輸入掃描的 int

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與整數(shù)正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextLong

public boolean hasNextLong()

如果此掃描儀輸入中的下一個(gè)標(biāo)記可以使用 nextLong() 方法解釋為默認(rèn)基數(shù)中的 long 值,則返回 true。 掃描儀不會超過任何輸入。

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)標(biāo)記是有效的長值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextLong

public boolean hasNextLong(int radix)

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextLong() 方法解釋為指定基數(shù)中的 long 值,則返回 true。 掃描儀不會超過任何輸入。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 用于將標(biāo)記解釋為長值的基數(shù)

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)標(biāo)記是有效的長值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

nextLong

public long nextLong()

將輸入的下一個(gè)標(biāo)記掃描為 long。

調(diào)用 nextLong() 形式的此方法的行為方式與調(diào)用 nextLong(radix) 完全相同,其中 radix 是此掃描儀的默認(rèn)基數(shù)。

返回:

從輸入中掃描的 long

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與整數(shù)正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

nextLong

public long nextLong(int radix)

將輸入的下一個(gè)標(biāo)記掃描為 long。 如果下一個(gè)標(biāo)記無法轉(zhuǎn)換為如下所述的有效長值,則此方法將拋出 InputMismatchException。 如果翻譯成功,掃描儀會超過匹配的輸入。

如果下一個(gè)標(biāo)記與上面定義的整數(shù)正則表達(dá)式匹配,則該標(biāo)記被轉(zhuǎn)換為長值,就像通過刪除所有區(qū)域設(shè)置特定前綴、組分隔符和區(qū)域設(shè)置特定后綴,然后通過 Character#digit 將非 ASCII 數(shù)字映射為 ASCII 數(shù)字 , 如果存在特定于語言環(huán)境的負(fù)前綴和后綴,則在前面加上負(fù)號 (-),并將結(jié)果字符串傳遞給具有指定基數(shù)的 Long#parseLong(String, int)。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 用于將標(biāo)記解釋為 int 值的基數(shù)

返回:

從輸入中掃描的 long

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與整數(shù)正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextFloat

public boolean hasNextFloat()

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextFloat() 方法解釋為浮點(diǎn)值,則返回 true。 掃描儀不會超過任何輸入。

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)標(biāo)記是有效的浮點(diǎn)值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

nextFloat

public float nextFloat()

將輸入的下一個(gè)標(biāo)記掃描為浮點(diǎn)數(shù)。 如果下一個(gè)標(biāo)記無法轉(zhuǎn)換為如下所述的有效浮點(diǎn)值,則此方法將拋出 InputMismatchException。 如果翻譯成功,掃描儀會超過匹配的輸入。

如果下一個(gè)標(biāo)記與上面定義的 Float 正則表達(dá)式匹配,則將標(biāo)記轉(zhuǎn)換為浮點(diǎn)值,就像通過刪除所有區(qū)域設(shè)置特定前綴、組分隔符和區(qū)域設(shè)置特定后綴,然后通過 Character#digit 將非 ASCII 數(shù)字映射為 ASCII 數(shù)字 , 如果存在特定于語言環(huán)境的負(fù)前綴和后綴,則在前面加上負(fù)號 (-),并將結(jié)果字符串傳遞給 Float#parseFloat。 如果令牌與本地化的 NaN 或無窮大字符串匹配,則“Nan”或“Infinity”將酌情傳遞給 Float#parseFloat(String)。

返回:

從輸入掃描的浮點(diǎn)數(shù)

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與 Float 正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextDouble

public boolean hasNextDouble()

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextDouble() 方法解釋為雙精度值,則返回 true。 掃描儀不會超過任何輸入。

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)標(biāo)記是有效的雙精度值時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

nextDouble

public double nextDouble()

將輸入的下一個(gè)標(biāo)記掃描為雙精度。 如果下一個(gè)標(biāo)記無法轉(zhuǎn)換為有效的雙精度值,此方法將拋出 InputMismatchException。 如果翻譯成功,掃描儀會超過匹配的輸入。

如果下一個(gè)標(biāo)記與上面定義的 Float 正則表達(dá)式匹配,則將標(biāo)記轉(zhuǎn)換為雙精度值,就像通過刪除所有區(qū)域設(shè)置特定前綴、組分隔符和區(qū)域設(shè)置特定后綴,然后通過 Character#digit 將非 ASCII 數(shù)字映射為 ASCII 數(shù)字 , 如果存在特定于語言環(huán)境的負(fù)前綴和后綴,則在前面加上負(fù)號 (-),并將結(jié)果字符串傳遞給 Double#parseDouble。 如果令牌與本地化的 NaN 或無窮大字符串匹配,則“Nan”或“Infinity”將酌情傳遞給 Double#parseDouble(String)。

返回:

從輸入掃描的 double

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與 Float 正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextBigInteger

public boolean hasNextBigInteger()

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextBigInteger() 方法解釋為默認(rèn)基數(shù)中的 BigInteger,則返回 true。 掃描儀不會超過任何輸入。

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)令牌是有效的 BigInteger 時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextBigInteger

public boolean hasNextBigInteger(int radix)

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextBigInteger() 方法解釋為指定基數(shù)中的 BigInteger,則返回 true。 掃描儀不會超過任何輸入。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 用于將標(biāo)記解釋為整數(shù)的基數(shù)

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)令牌是有效的 BigInteger 時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

nextBigInteger

public BigInteger nextBigInteger()

將輸入的下一個(gè)標(biāo)記掃描為 BigInteger。

調(diào)用 nextBigInteger() 形式的此方法的行為方式與調(diào)用 nextBigInteger(radix) 完全相同,其中 radix 是此掃描儀的默認(rèn)基數(shù)。

返回:

從輸入掃描的 BigInteger

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與整數(shù)正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

nextBigInteger

public BigInteger nextBigInteger(int radix)

將輸入的下一個(gè)標(biāo)記掃描為 BigInteger。

如果下一個(gè)標(biāo)記與上面定義的整數(shù)正則表達(dá)式匹配,則該標(biāo)記被轉(zhuǎn)換為 BigInteger 值,就好像通過刪除所有組分隔符,通過 Character#digit 將非 ASCII 數(shù)字映射為 ASCII 數(shù)字,并將生成的字符串傳遞給 BigInteger (String, int) 具有指定基數(shù)的構(gòu)造函數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
radix 用于解釋標(biāo)記的基數(shù)

返回:

從輸入掃描的 BigInteger

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與整數(shù)正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

hasNextBigDecimal

public boolean hasNextBigDecimal()

如果此掃描器輸入中的下一個(gè)標(biāo)記可以使用 nextBigDecimal() 方法解釋為 BigDecimal,則返回 true。 掃描儀不會超過任何輸入。

返回:

當(dāng)且僅當(dāng)此掃描器的下一個(gè)令牌是有效的 BigDecimal 時(shí)才為 true

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此掃描儀已關(guān)閉

nextBigDecimal

public BigDecimal nextBigDecimal()

將輸入的下一個(gè)標(biāo)記掃描為 BigDecimal。

如果下一個(gè)標(biāo)記與上面定義的 Decimal 正則表達(dá)式匹配,則該標(biāo)記被轉(zhuǎn)換為 BigDecimal 值,就好像通過刪除所有組分隔符,通過 Character#digit 將非 ASCII 數(shù)字映射為 ASCII 數(shù)字,并將結(jié)果字符串傳遞給 BigDecimal (字符串)構(gòu)造函數(shù)。

返回:

從輸入掃描的 BigDecimal

Throws:

Throw名稱 Throw描述
InputMismatchException 如果下一個(gè)標(biāo)記與 Decimal 正則表達(dá)式不匹配,或者超出范圍
NoSuchElementException 如果 input 已用完
IllegalStateException 如果此掃描儀已關(guān)閉

reset

public Scanner reset()

重置此掃描儀。

重置掃描器會丟棄其所有顯式狀態(tài)信息,這些信息可能已被 useDelimiter(java.util.regex.Pattern)、useLocale(java.util.Locale) 或 useRadix(int) 調(diào)用更改。

形式為scanner.reset() 的此方法的調(diào)用與調(diào)用的行為方式完全相同

   scanner.useDelimiter("\\p{javaWhitespace}+")
          .useLocale(Locale.getDefault(Locale.Category.FORMAT))
          .useRadix(10);

返回:

這個(gè)掃描儀

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號