當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。