当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Scanner用法及代码示例


在Java中,Scanner是java.util包中的一个类,用于获取int、double等基本类型和字符串的输入。

在 Java 中使用 Scanner 类是在 Java 程序中读取输入的最简单方法,但如果您需要一种输入方法,用于时间有限的场景(如竞争性编程),则效率不高。

Java 扫描器输入类型

Scanner 类有助于获取 Java 中的标准输入流。因此,我们需要一些方法来从流中提取数据。用于提取数据的方法如下:

方法

说明

Scanner nextBoolean()

用于读取布尔值

Scanner nextByte()

用于读取字节值

Scanner nextDouble()

用于读取 Double 值

Scanner nextFloat()

用于读取浮点值

Scanner nextInt()

用于读取Int值

Scanner nextLine()

用于读取行值

Scanner nextLong()

用于读取长整型值

Scanner nextShort()

用于读取 Short 值

让我们看一下读取各种数据类型的数据的代码片段。

Java Scanner 类的示例

示例 1:

Java


// Java program to read data of various types 
// using Scanner class.
import java.util.Scanner;
// Driver Class
public class ScannerDemo1 {
      // main function
    public static void main(String[] args)
    {
        // Declare the object and initialize with
        // predefined standard input object
        Scanner sc = new Scanner(System.in);
        // String input
        String name = sc.nextLine();
        // Character input
        char gender = sc.next().charAt(0);
        // Numerical data input
        // byte, short and float can be read
        // using similar-named functions.
        int age = sc.nextInt();
        long mobileNo = sc.nextLong();
        double cgpa = sc.nextDouble();
        // Print the values to check if the input was
        // correctly obtained.
        System.out.println("Name: " + name);
        System.out.println("Gender: " + gender);
        System.out.println("Age: " + age);
        System.out.println("Mobile Number: " + mobileNo);
        System.out.println("CGPA: " + cgpa);
    }
}

输入

Geek
F
40
9876543210
9.9

输出

Name: Geek
Gender: F
Age: 40
Mobile Number: 9876543210
CGPA: 9.9

有时,我们必须检查读取的下一个值是否属于某种类型或者输入是否已结束(遇到 EOF 标记)。

然后,我们借助 hasNextXYZ() 函数检查扫描仪的输入是否是我们想要的类型,其中 XYZ 是我们感兴趣的类型。如果扫描仪具有该类型的令牌,则该函数返回 true,否则返回 false。例如,在下面的代码中,我们使用了hasNextInt()。要检查字符串,我们使用hasNextLine()。同样,要检查单个字符,我们使用hasNext().charAt(0)。

示例 2:

让我们看一下从控制台读取一些数字并打印它们的平均值的代码片段。

Java


// Java program to read some values using Scanner
// class and print their mean.
import java.util.Scanner;
public class ScannerDemo2 {
    public static void main(String[] args)
    {
        // Declare an object and initialize with
        // predefined standard input object
        Scanner sc = new Scanner(System.in);
        // Initialize sum and count of input elements
        int sum = 0, count = 0;
        // Check if an int value is available
        while (sc.hasNextInt()) {
            // Read an int value
            int num = sc.nextInt();
            sum += num;
            count++;
        }
        if (count > 0) {
            int mean = sum / count;
            System.out.println("Mean: " + mean);
        }
        else {
            System.out.println(
                "No integers were input. Mean cannot be calculated.");
        }
    }
}

输入

1 2 3 4 5 

输出

Mean: 3

关于 Java Scanner 类的要点

  • 为了创建Scanner类的对象,我们通常传递预定义的对象System.in,它代表标准输入流。如果我们想从文件中读取输入,我们可以传递 File 类的对象。
  • 要读取某种数据类型 XYZ 的数值,要使用的函数是nextXYZ()。例如,要读取short类型的值,我们可以使用nextShort()
  • 要读取字符串,我们使用nextLine()。
  • 要读取单个字符,我们使用next().charAt(0)。 next() 函数以字符串形式返回输入中的下一个标记/单词,charAt(0) 函数返回该字符串中的第一个字符。
  • Scanner 类读取整行并将该行划分为标记。标记是对 Java 编译器具有一定意义的小元素。例如,假设有一个输入字符串:How are you
    在这种情况下,扫描器对象将读取整行并将字符串划分为标记:“How”、“are” 和 “you”。然后,该对象迭代每个标记并使用其不同的方法读取每个标记。


相关用法


注:本文由纯净天空筛选整理自佚名大神的英文原创作品 Scanner Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。