Java中的扫描器类Scanner

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)

Java中的扫描器类Scanner

Scanner是java.util包中的一个类,用于获取像int,double等字符串和基本类型的输入。这是在Java程序中读取输入的最简单方法,但如果您希望在竞争性编程中时间受到限制的情况下使用输入方法,则效率不高。

  • 要创建Scanner类的对象,我们通常会传递预定义的对象System.in,它代表标准输入流。如果我们想从文件中读取输入,我们可以传递类File的对象。
  • 要读取特定数据类型XYZ的数值,使用的函数是nextXYZ()。例如,要读取short类型的值,我们可以使用nextShort()
  • 为了读取字符串,我们使用nextLine()。
  • 要读取单个字符,我们使用next()。charAt(0)。next()函数以字符串形式返回输入中的下一个标记/单词,charAt(0)函数返回该字符串中的第一个字符。

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

// Java program to read data of various types using Scanner class.
import java.util.Scanner;
public class ScannerDemo1
{
    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 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)。

让我们看看代码片段,从控制台读取一些数字并打印它们的意思。

// 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++;
        }
        int mean = sum / count;
        System.out.println("Mean: " + mean);
    }
}

输入:

101
223
238
892
99
500
728

输出:

Mean: 397

Java Scanner类的一些常见问题

Java中的Scanner和BufferReader类之间的区别

  •   本文标题:Java中的扫描器类Scanner - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/4007.html

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注