[英]When and why to use Scanner?
我是Java的新手,正在阅读处理输入和输出的不同方法。 根据我的阅读,各种策略可以归结为两件事,即
FileInputStream
, FileOutputStream
)。 FileReader
, FileWriter
)。 但是Scanner
在图片中适合什么位置? 一个示例用例会很好。
如果您想读取令牌,请使用扫描仪
读取字符流时使用FileReader
读取二进制文件时,请使用FileInputReader 。
扫描器:
扫描程序使用定界符模式将其输入分为令牌,默认情况下,该模式与空格匹配。 然后,可以使用各种下一种方法将生成的令牌转换为不同类型的值。 扫描仪-JavaDoc
对于Filereader和FileInputReader:
FileReader用于读取字符流。 为了读取原始字节流,请考虑使用FileInputStream。 FileReader -javadoc
扫描仪示例:
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();
扫描程序是用于读取令牌输入的更高级别的类。
什么是代币? 对于Scanner类,令牌可以是原始值和某些特殊对象:
另外,可以使用nextLine
读取整行。
Scanner类是java.util
的类,它允许用户读取各种类型的值。 有两个特别有用的构造函数:一个将InputStream
对象作为参数,另一个将FileReader
对象作为参数。
Scanner in = new Scanner(System.in); // System.in is an InputStream
Scanner inFile = new Scanner(new FileReader("myFile"));// If the file ≥myFile≤ is not found, a FileNotFoundException is thrown.
各种方法:
int nextInt()
:将下一个标记作为int返回。 如果下一个标记不是整数,则抛出InputMismatchException。 long nextLong()
:将下一个标记作为long返回。 如果下一个标记不是整数,则抛出InputMismatchException。 float nextFloat()
:以float形式返回下一个标记。 如果下一个令牌不是浮点型或超出范围,则抛出InputMismatchException。 double nextDouble()
:以长double nextDouble()
返回下一个标记。 如果下一个令牌不是浮点型或超出范围,则抛出InputMismatchException。 String nextLine()
:返回当前行的其余部分,但不包括末尾的任何行分隔符。 void close()
:关闭扫描仪。 扫描程序在输入中查找令牌。 令牌是一系列以Java称为空白结尾的字符。 因此,如果我们读取一行包含一系列用空格分隔的数字的行,则扫描程序将把每个数字作为一个单独的标记。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.