问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

* 最新 java中的Scanner问题

发布网友 发布时间:2022-04-21 14:32

我来回答

1个回答

热心网友 时间:2022-04-14 09:17

1.类型。一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
2.nextBigDecimal() ;nextBigInteger() ;nextBigInteger(int radix);nextBoolean();nextByte();nextByte(int radix);nextDouble();nextFloat();nextInt();nextInt(int radix);nextLine();nextLong();nextLong(int radix);nextShort();nextShort(int radix);
3.参见java api。或者反编译Scanner类。

public final class Scannerextends Objectimplements Iterator<String>一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。

Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。

例如,以下代码使用户能够从 System.in 中读取一个数:

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
再看一个例子,以下代码使 long 类型可以通过 myNumbers 文件中的项分配:

Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}扫描器还可以使用不同于空白的分隔符。下面是从一个字符串读取若干项的例子:

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 以下代码使用正则表达式同时解析所有的 4 个标记,并可以产生与上例相同的输出结果:

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(); 扫描器所使用的默认空白分隔符通过 Character.isWhitespace 来识别。不管以前是否更改,reset() 方法将把扫描器分隔符的值重置为默认空白分隔符。

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

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 。

本地化数字
此类的一个实例能够以标准格式以及扫描器语言环境的格式扫描数字。扫描器的 初始语言环境 是 Locale.getDefault() 方法返回的值;它可以通过 useLocale(java.util.Locale) 方法更改。不管以前是否更改,reset() 方法将把扫描器的语言环境重置为初始语言环境。

本地化格式是根据以下参数定义的,对于某一特定语言环境来说,这些参数取自该语言环境的 DecimalFormat 对象 df,及其 DecimalFormatSymbols 对象 dfs。

LocalGroupSeparator 用于分隔数千个组的字符,即 dfs.getGroupingSeparator()
LocalDecimalSeparator 用于小数点的字符,即 dfs.getDecimalSeparator()
LocalPositivePrefix 出现在正数前的字符串(可以为空),即 df.getPositivePrefix()
LocalPositiveSuffix 出现在正数后的字符串(可以为空),即 df.getPositiveSuffix()
LocalNegativePrefix 出现在负数前的字符串(可以为空),即 df.getNegativePrefix()
LocalNegativeSuffix 出现在负数后的字符串(可以为空),即 df.getNegativeSuffix()
LocalNaN 表示浮点值的非数字的字符串,即 dfs.getNaN()
LocalInfinity 表示浮点值的无穷大的字符串,即 dfs.getInfinity()

数字语法
可通过此类的一个实例解析为数字的字符串是根据以下正则表达式语法指定的,在这种情况下 Rmax 是正在使用的基数中的最高数字(例如,在基数 10 中 Rmax 为 9)。

NonASCIIDigit :: = 非 ASCII 字符 c,对于它,Character.isDigit(c) 返回 true

Non0Digit :: = [1-Rmax] | NonASCIIDigit

Digit :: = [0-Rmax] | NonASCIIDigit

GroupedNumeral :: = ( Non0Digit Digit? Digit?
( LocalGroupSeparator Digit Digit Digit )+ )

Numeral :: = ( ( Digit+ ) | GroupedNumeral )

Integer :: = ( [-+]? ( Numeral ) )
| LocalPositivePrefix Numeral LocalPositiveSuffix
| LocalNegativePrefix Numeral LocalNegativeSuffix

DecimalNumeral :: = Numeral
| Numeral LocalDecimalSeparator Digit*
| LocalDecimalSeparator Digit+

Exponent :: = ( [eE] [+-]? Digit+ )

Decimal :: = ( [-+]? DecimalNumeral Exponent? )
| LocalPositivePrefix DecimalNumeral LocalPositiveSuffix Exponent?
| LocalNegativePrefix DecimalNumeral LocalNegativeSuffix Exponent?

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

NonNumber :: = NaN | LocalNan | Infinity | LocalInfinity

SignedNonNumber :: = ( [-+]? NonNumber )
| LocalPositivePrefix NonNumber LocalPositiveSuffix
| LocalNegativePrefix NonNumber LocalNegativeSuffix

Float :: = Decimal
| HexFloat
| SignedNonNumber

上面正则表达式中的空白没有意义。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哪些网站可以找到更好的ppt配图? 有哪些“免费”的ppt模板,图片素材的网站? 推荐点梁汉文的好歌 梁汉文好听的经典歌 哲理词句大全精选278句 微信名字最好听527个 面试没过可以再争取话术 面试后被拒绝了如何重新争取 面试复试没通过还能争取吗 3d定制女仆2电脑配置这个配置能玩3D定制女仆2么不行的话需要换什么 java中怎么用scanner java中scanner怎么用 java scanner用法是什么? java中Scanner s = new Scanner(System.in);分别是什么意思? Scanner在java中有什么用法怎么用 Java中scanner reader =new scanner (System.in)代表什么意 Scanner在java中有什么用法怎么用 java中Scanner类有什么作用 java中 Scanner是干嘛的 java中scanner是什么意思 scanner在java中的意思 有一工程招标,要四人完成的搞笑版招麻将搭子 衢州麻将的特殊牌型 川渝地区有很多麻将馆,为何他们这么喜欢打麻将? 衢州麻将邋遢胡怎么玩? 对于川渝地区的人来说,为什么他们这么喜欢打麻将呢? 最好笑的笑话段子 都知道十赌九输的道理,为什么还有那么多人去打麻将? 如图所示:玩麻将时让你选择条,筒,万是什么意思啊? 幽默段子:如果用麻将精神去工作,会怎么样 java中scanner用法 Scanner sc = new Scanner(System.in),double a = sc.nextDouble(); ; 在java中是什么意思啊 Scanner input=new Scanner(System.in)什么意思? import java.util.regex.*;在java中这句话是什么意思 java中scanner.close 什么意思 不伤塑料怎么去除502白痕? 怎样可以去除502胶水 如何消除已固的502胶水手上 互联网带动了哪些硬件设备 404 Not Found 心情不好,有没有人可以聊天? 鏈夐┈娑﹀湪灏辫屼簡锛屾垜浠鍦ㄤ笉鍦ㄦ剰涔変笉澶是什么字 心情不好的时候,应该找谁说话? 我心情不好想找一个聊聊天? 心情不好,不知道跟谁说,该怎么办? 心情不好,不知道跟谁说 想找个聊天的人,怎么办?心情不好,太压抑了! 我想找一个人聊天,心情不好 心情不好的时候该找谁来聊天 当你心情不好的时候,你会找谁?