Java中的Scanner和nextChar()


Scanner是`java.util`包中可用的一個類,用於從多個來源(如檔案或控制檯)獲取輸入。最常見的輸入來源是標準輸入,即鍵盤。Scanner類有一些方法可以從鍵盤獲取基本型別和字串的輸入。

我們將透過這篇文章瞭解Scanner類及其各種方法。

Scanner和nextChar()

Scanner類使用以下方法獲取輸入:

  • nextInt() − 獲取整數輸入。

  • nextLong() − 獲取長整型輸入。

  • nextDouble() − 獲取雙精度浮點數輸入。

  • nextFloat() − 獲取單精度浮點數輸入。

  • nextLine() − 獲取字串輸入。

您可能已經注意到,Scanner類中沒有nextChar()方法。通常,獲取輸入時,我們使用“next”後跟資料型別名稱,但字元輸入並非如此。我們使用next().charAt(0)來獲取字元型別輸入,而不是nextChar()。

我們同時使用next()和charAt(0)方法。next()方法可以獲取字串或數字輸入,但為了將輸入限制為單個字元資料型別,我們與它一起使用charAt(0)。引數0表示單個字元。

首先,讓我們討論如何建立Scanner,然後我們將看到nextChar()。

語法

Scanner nameOfobject = new Scanner(source);

引數

source − 您想要從中讀取輸入的來源。

例項

Scanner read = new Scanner(System.in);

在上面的示例中,我們建立了一個Scanner類的物件“read”,以及允許從鍵盤讀取輸入的源“System.in”。

建立Scanner後,我們可以使用其物件後跟點(.)運算子及其方法從指定的源獲取輸入並將值賦給相應的變數。

示例1

以下示例說明了如何使用Scanner類並從標準輸入(即鍵盤)讀取輸入。

import java.util.Scanner;
public class Input {
   public static void main(String []args) {
      Scanner read = new Scanner(System.in);
      System.out.println("Enter integer value: ");
      int n1 = read.nextInt();
      System.out.println("Enter double value: ");
      double d1 = read.nextDouble();
      System.out.println("Enter float value: ");
      float f1 = read.nextFloat();
      System.out.println("Integer value: " + n1);
      System.out.println("Double value: " + d1);
      System.out.println("Float value: " + f1);
   }
}

輸出

Enter integer value: 
9
Enter double value: 
236.555555
Enter float value: 
4.5
Integer value: 9
Double value: 236.555555
Float value: 4.5

在上面的程式碼中,我們從java.util包匯入了Scanner類,以便在程式中使用Scanner。“sc”是Scanner的物件,“System.in”是建立的用於從鍵盤接收不同基本值的源。我們使用nextInt()、nextDouble()和nextFloat()分別接收整數、雙精度浮點數和單精度浮點數的值。

示例2

在這個示例中,我們將使用nextLine()從鍵盤獲取字串型別輸入並將值儲存在字串型別變數“st”中。

import java.util.Scanner;
public class Input {
   public static void main(String []args) {
      Scanner read = new Scanner(System.in);
      System.out.println("Enter a String: ");
      while(read.hasNext()) {
         String st = read.nextLine();
         System.out.println("String value: " + st);
      }
   }
}

輸出

Enter a String: 
tutorialspoint
String value: tutorialspoint

示例3

在這個示例中,我們將使用next().charAt(0)從鍵盤獲取字元型別輸入。

import java.util.Scanner;
public class Input{
   public static void main(String[] args){
      Scanner read = new Scanner(System.in);
      System.out.println("Enter any character value: ");
      char chs = read.next().charAt(0);
      System.out.println("The entered value: " + chs);
   }
}

輸出

Enter any character value: 
T
The entered value: T

如果我們使用nextChar()讀取字元型別輸入會怎樣?讓我們用一個例子看看。

示例3

import java.util.Scanner;
public class Input {
   public static void main(String[] args) {
      Scanner read = new Scanner(System.in);
      System.out.println("Enter any character value: ");
      char chs = read.nextchar();
      System.out.println("The entered value: " + chs);
   }
}

輸出

Input.java:6: error: cannot find symbol
char chs = read.nextchar();
                       ^
  symbol:   method nextchar()
  location: variable read of type Scanner
1 error

我們得到這個錯誤是因為Java不支援nextChar()。

結論

在Java中,Scanner類支援nextInt()、nextFloat(),但不支援nextChar()。大多數新手都使用nextChar(),因為它聽起來與用於讀取輸入的其他方法類似,但他們會因為nextChar()不受支援而報錯。因此,我們試圖透過這篇文章解釋Scanner類,以消除所有疑問。

更新於:2023年5月5日

3000+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告