Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 何时以及为什么使用扫描仪?_Java - Fatal编程技术网

Java 何时以及为什么使用扫描仪?

Java 何时以及为什么使用扫描仪?,java,Java,我是Java新手,正在阅读处理输入和输出的不同方法。从我所读到的,各种策略归结为两件事,即 按字节读/写(FileInputStream,FileOutputStream) 按字符读取/写入(FileReader,FileWriter) 但是,扫描仪在图片中的位置如何?一个示例用例会很好。Scanner是一个更高级别的类,用于读取令牌输入 什么是代币?对于类扫描程序,令牌可以是基本值和一些特殊对象: 长(带下一个长) int(带nextInt) 短(带nextShort) 字节(带下一个字节)

我是Java新手,正在阅读处理输入和输出的不同方法。从我所读到的,各种策略归结为两件事,即

  • 按字节读/写(
    FileInputStream
    FileOutputStream
  • 按字符读取/写入(
    FileReader
    FileWriter

  • 但是,
    扫描仪
    在图片中的位置如何?一个示例用例会很好。

    Scanner是一个更高级别的类,用于读取令牌输入

    什么是代币?对于类扫描程序,令牌可以是基本值和一些特殊对象:

    • 长(带下一个长)
    • int(带nextInt)
    • 短(带nextShort)
    • 字节(带下一个字节)
    • 布尔值(带nextBoolean)
    • BigDecimal(带nextBigDecimal)
    • 浮动(带nextFloat)
    • 双倍(带下一个双倍)

    此外,如果要读取令牌,可以使用
    nextLine
    读取整行

    读取字符流时使用文件读取器

    读取二进制文件时,请使用文件输入读取器

    扫描仪:

    扫描仪使用分隔符模式将其输入拆分为标记, 默认情况下与空白匹配。由此产生的代币可以是 使用不同的next转换为不同类型的值 方法

    对于Filereader和FileInputReader:

    FileReader用于读取字符流。阅读 原始字节流,考虑使用FieldPixStudio。 扫描仪示例:

    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类是
    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()
      :以浮点形式返回下一个标记。如果下一个标记不是浮点或超出范围,则抛出InputMissMatchException
    • double nextDouble()
      :将下一个标记作为长标记返回。如果下一个标记不是浮点或超出范围,则抛出InputMissMatchException
    • String next():查找并返回来自此扫描仪的下一个完整标记,并将其作为字符串返回;标记通常以空白或换行符等空格结尾。如果不存在令牌,则抛出NoTouchElementException
    • String nextLine()
      :返回当前行的其余部分,不包括末尾的任何行分隔符
    • void close()
      :关闭扫描仪

    扫描程序在输入中查找令牌。标记是一系列字符,以Java称之为空白的字符结尾。因此,如果我们读取一行,其中有一系列由空格分隔的数字,扫描器将把每个数字作为单独的标记

    在发帖之前试试,这样可以为大家节省时间。@Jens如果javadoc足够的话,我就不会在这里了。很多时候,对你来说显而易见的事情对别人来说可能不一样。谢谢。另外,
    Scanner
    一次读取整个输入,或逐个搜索
    令牌
    ?因此,Scanner一次读取整个输入流或获取一个令牌?它们使用读取令牌的字符。它们不会一步消耗掉整个流程。