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類,以消除所有疑問。