在本教程中,我們將借助示例學習Java Scanner及其方法。
java.io包的PrintWriter類可用于以通??勺x的形式(文本)寫入輸出數(shù)據(jù)。
java.util包的Scanner類用于從不同的源(例如輸入流,用戶,文件等)讀取輸入數(shù)據(jù)。讓我們舉個實例。
import java.util.Scanner; class Main { public static void main(String[] args) { //創(chuàng)建一個對象 Scanner Scanner input = new Scanner(System.in); System.out.print("輸入姓名: "); // 從鍵盤接收輸入 String name = input.nextLine(); // 打印輸出姓名 System.out.println("我的名字是 " + name); // Closes the scanner input.close(); } }
輸出結(jié)果
輸入姓名: Jack 我的名字是 Jack
在上面的示例中,請注意以下行
Scanner input = new Scanner(System.in);
在這里,我們創(chuàng)建了一個名為input的Scanner對象。
System.in參數(shù)用于從標準輸入中獲取輸入。 就像從鍵盤上獲取輸入一樣。
然后,我們使用Scanner類的nextLine()方法從用戶那里讀取一行文本。
現(xiàn)在您對Scanner有了一些了解,讓我們對其進行更多的探索。
從上面的示例可以看到,我們需要先導入java.util.Scanner包,然后才能使用Scanner類。
import java.util.Scanner;
如上所述,導入包后,就可以創(chuàng)建Scanner對象。
//從輸入流中讀取輸入 Scanner sc1 = new Scanner(InputStream input); //從文件讀取輸入 Scanner sc2 = new Scanner(File file); //從字符串中讀取輸入 Scanner sc3 = new Scanner(String str);
在這里,我們創(chuàng)建了Scanner類的對象,這些對象將分別從InputStream,文件和字符串讀取輸入。
Scanner類提供各種方法,使我們能夠讀出不同類型的輸入。
方法 | 描述 |
---|---|
nextInt() | 從用戶讀取int值 |
nextFloat() | 從用戶讀取float值 |
nextBoolean() | 從用戶讀取boolean值 |
nextLine() | 從用戶讀取一行文本 |
next() | 從用戶那里讀取一個單詞 |
nextByte() | 從用戶讀取byte值 |
nextDouble() | 從用戶讀取double值 |
nextShort() | 從用戶讀取short值 |
nextLong() | 從用戶讀取long值 |
import java.util.Scanner; class Main { public static void main(String[] args) { //創(chuàng)建掃描器對象 Scanner input = new Scanner(System.in); System.out.println("輸入一個整數(shù): "); //讀取一個int值 int data1 = input.nextInt(); System.out.println("使用 nextInt(): " + data1); input.close(); } }
輸出結(jié)果
輸入一個整數(shù): 22 使用 nextInt(): 22
在上面的示例中,我們使用了nextInt()方法來讀取整數(shù)值。
import java.util.Scanner; class Main { public static void main(String[] args) { //創(chuàng)建一個Scanner對象 Scanner input = new Scanner(System.in); System.out.print("輸入雙精度值: "); //讀取雙精度值 double value = input.nextDouble(); System.out.println("使用 nextDouble(): " + value); input.close(); } }
輸出結(jié)果
輸入雙精度值: 33.33 使用 nextDouble(): 33.33
在上面的示例中,我們使用了nextDouble()方法來讀取浮點值。
import java.util.Scanner; class Main { public static void main(String[] args) { //創(chuàng)建一個Scanner對象 Scanner input = new Scanner(System.in); System.out.print("Enter your name: "); //讀取整個單詞 String value = input.next(); System.out.println("Using next(): " + value); input.close(); } }
輸出結(jié)果
Enter your name: Jonny Walker Using next(): Jonny
在上面的示例中,我們使用next()方法從用戶讀取字符串。
在這里,我們提供了全名。 但是,next()方法僅讀取名字。
這是因為next()方法將輸入讀取到空格字符。一旦遇到空格,它就返回字符串(不包括空格)。
import java.util.Scanner; class Main { public static void main(String[] args) { //創(chuàng)建一個Scanner對象 Scanner input = new Scanner(System.in); System.out.print("Enter your name: "); //讀取整行 String value = input.nextLine(); System.out.println("Using nextLine(): " + value); input.close(); } }
輸出結(jié)果
Enter your name: Jonny Walker Using nextLine(): Jonny Walker
在第一個示例中,我們使用了nextLine()方法從用戶讀取字符串。
與next()不同,nextLine()方法讀取包括空格在內(nèi)的整個輸入行。當該方法遇到下一行字符\n時終止。
Java掃描程序還可以用于讀取大整數(shù)和大十進制數(shù)。
nextBigInteger() - 從用戶讀取大整數(shù)值
nextBigDecimal() - 從用戶讀取大十進制值
import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; class Main { public static void main(String[] args) { //創(chuàng)建一個Scanner對象 Scanner input = new Scanner(System.in); System.out.print("輸入一個大整數(shù): "); //讀取大整數(shù) BigInteger value1 = input.nextBigInteger(); System.out.println("Using nextBigInteger(): " + value1); System.out.print("輸入一個大十進制: "); //讀取大十進制 BigDecimal value2 = input.nextBigDecimal(); System.out.println("Using nextBigDecimal(): " + value2); input.close(); } }
輸出結(jié)果
輸入一個大整數(shù): 987654321 使用 nextBigInteger(): 987654321 輸入一個大十進制: 9.55555 使用 nextBigDecimal(): 9.55555
在上面的示例中,我們使用java.math.BigInteger和java.math.BigDecimal包分別讀取BigInteger和BigDecimal。
掃描器類讀取整個行,并將該行劃分為記號。令牌是對Java編譯器有一定意義的小元素。例如
假設(shè)有一個輸入字符串:
He is 22
在這種情況下,掃描程序?qū)ο髮⒆x取整行并將該字符串分為令牌:“ He ”,“ is ”和“ 22 ”。然后,對象遍歷每個令牌,并使用其不同方法讀取每個令牌。
注意:默認情況下,空格用于劃分標記。