📜  Java Scanner仪类

📅  最后修改于: 2020-09-26 15:42:03             🧑  作者: Mango

在本教程中,我们将借助示例学习Java Scanner及其方法。

java.util包的Scanner类用于从不同的源(例如输入流,用户,文件等)读取输入数据。让我们举个例子。


示例1:使用扫描仪读取一行文本
import java.util.Scanner;

class Main {
    public static void main(String[] args) {

        // Creates an object of Scanner
        Scanner input = new Scanner(System.in);

        System.out.print("Enter your name: ");

        // Takes input from the keyboard
        String name = input.nextLine();

        // Prints name
        System.out.println("My name is " + name);

        // Closes the scanner
        input.close();
    }
}

输出

Enter your name: Jack
My name is Jack

在上面的示例中,请注意以下行

Scanner input = new Scanner(System.in);

在这里,我们创建了一个名为inputScanner对象。

System.in参数用于从标准输入中获取输入。就像从键盘上获取输入一样。

然后,我们使用Scanner类的nextLine()方法从用户读取一行文本。

现在您对Scanner有了一些了解,让我们对其进行更多探索。


导入扫描仪类

从上面的示例可以看出,在使用Scanner类之前,需要导入java.util.Scanner包。

import java.util.Scanner;

用Java创建扫描程序对象

如上所述,导入包后,就可以创建Scanner对象。

// To read input from the input stream
Scanner sc1 = new Scanner(InputStream input);

// To read input from files
Scanner sc2 = new Scanner(File file);

// To read input from a string
Scanner sc3 = new Scanner(String str);

在这里,我们创建了Scanner类的对象,这些对象将分别从InputStream,文件和字符串读取输入。


Java扫描仪输入方法

Scanner类提供了各种方法,使我们可以读取不同类型的输入。

Method Description
nextInt() reads an int value from the user
nextFloat() reads a float value form the user
nextBoolean() reads a boolean value from the user
nextLine() reads a line of text from the user
next() reads a word from the user
nextByte() reads a byte value from the user
nextDouble() reads a double value from the user
nextShort() reads a short value from the user
nextLong() reads a long value from the user

示例2:Java扫描程序nextInt()

import java.util.Scanner;

class Main {
    public static void main(String[] args) {

        // creating a Scanner object
        Scanner input = new Scanner(System.in);

        System.out.println("Enter an integer: ");

        // read an int value
        int data1 = input.nextInt();

        System.out.println("Using nextInt(): " + data1);

        input.close();
    }
}

输出

Enter an integer:
22
Using nextInt(): 22

在上面的示例中,我们使用nextInt()方法读取整数值。


示例3:Java扫描仪nextDouble()

import java.util.Scanner;

class Main {
   public static void main(String[] args) {

      // creates an object of Scanner
      Scanner input = new Scanner(System.in);
      System.out.print("Enter double value: ");

      // reads the double value
      double value = input.nextDouble();
      System.out.println("Using nextDouble(): " + value);

      input.close();
   }
}

输出

Enter double value: 33.33
Using nextDouble(): 33.33

在上面的示例中,我们使用nextDouble()方法读取浮点值。


示例4:Java扫描器next()

import java.util.Scanner;

class Main {
   public static void main(String[] args) {

      // creates an object of Scanner
      Scanner input = new Scanner(System.in);
      System.out.print("Enter your name: ");

      // reads the entire word 
      String value = input.next();
      System.out.println("Using next(): " + value);

      input.close();
   }
}

输出

Enter your name: Jonny Walker
Using next(): Jonny

在上面的示例中,我们使用next()方法从用户读取字符串 。

在这里,我们提供了全名。但是, next()方法仅读取名字。

这是因为next()方法最多读取空白 字符。遇到空格后 ,它将返回字符串 (空格除外)。


示例5:Java扫描器nextLine()

import java.util.Scanner;

class Main {
   public static void main(String[] args) {

      // creates an object of Scanner
      Scanner input = new Scanner(System.in);
      System.out.print("Enter your name: ");

      // reads the entire line
      String value = input.nextLine();
      System.out.println("Using nextLine(): " + value);

      input.close();
   }
}

输出

Enter your name: Jonny Walker
Using nextLine(): Jonny Walker

在第一个示例中,我们使用nextLine()方法从用户读取字符串 。

next()不同, nextLine()方法读取包含空格的整个输入行。当遇到下一个行字符\n时,该方法终止。

推荐读物: Java Scanner跳过nextLine()。


具有BigInteger和BigDecimal的Java扫描仪

Java扫描程序还可以用于读取大整数和大十进制数。要了解BigInteger和BigDecimal,请访问Java BigIntegerJava BigDecimal

  • nextBigInteger() -从用户读取大整数值
  • nextBigDecimal() -从用户读取大十进制值

示例4:读取BigInteger和BigDecimal

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

class Main {
   public static void main(String[] args) {

      // creates an object of Scanner
      Scanner input = new Scanner(System.in);
      System.out.print("Enter a big integer: ");

      // reads the big integer
      BigInteger value1 = input.nextBigInteger();
      System.out.println("Using nextBigInteger(): " + value1);

      System.out.print("Enter a big decimal: ");

      // reads the big decimal
      BigDecimal value2 = input.nextBigDecimal();
      System.out.println("Using nextBigDecimal(): " + value2);

      input.close();
   }
}

输出

Enter a big integer: 987654321
Using nextBigInteger(): 987654321
Enter a big decimal: 9.55555
Using nextBigDecimal(): 9.55555

在上面的示例中,我们使用java.math.BigIntegerjava.math.BigDecimal包分别读取BigIntegerBigDecimal


Java扫描仪的工作

Scanner类读取整行并将该行分为令牌。令牌是对Java编译器有意义的小元素。例如,

假设有一个输入字符串:

He is 22

在这种情况下,扫描程序对象将读取整行并将该字符串分为令牌:“ He “,“ is “和“ 22 “。然后,对象遍历每个令牌,并使用其不同方法读取每个令牌。

注意 :默认情况下,空格用于划分标记。