1、作用:用來獲取用戶的鍵盤輸入(需要導入:import java.util.Scanner;)
2、方法:
(1)判斷是否還有數據:
- hasNext():判斷是否含有下一個字符串
- hasNextXxx():其中Xxx可以是int、long等代表基本數據類型的字符串
- hasNextLine():判斷輸入中是否還有下一行
(2)獲取下一個數據:
- next():返回輸入中下一個字符串
- nextXxx():返回輸入中下一個類型爲Xxx的數據
- nextLine():返回輸入中下一行字符串
(3)設置分隔符:useDelimiter(String pattern):不設置,默認分隔符是空白
//字符串
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//字符串
while(sc.hasNext()) {
System.out.println("輸入的數據是:"+sc.next());
}
}
}
//int型數據
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()) {
System.out.println("輸入的數據是:"+sc.next());
}
}
}
//一整行
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNextLine()) {
System.out.println("輸入的數據是:"+sc.nextLine());
}
}
}
上面三個程序之間的區別在於:
(1)①與②相比,①可以輸入任何數據,如字符串、基本類型數據、中文等等;而②只能輸入int型數據,如果哪一次輸入的不是int型數據,則該程序自動結束,無法再輸入數據
(2)①與③相比,①每次遇到空格鍵,默認是一組數據,當同一行輸入的數據中,包含一個空格,那麼①自動將其當成兩個數據輸出,但是③當成一個數據。
運行上述三個代碼,得到結果如下:
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//修改默認的空格分隔符,改爲換行纔是分隔符
sc.useDelimiter("\n");
while(sc.hasNext()) {
System.out.println("輸入的數據是:"+sc.next());
}
}
}
運行結果如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MQj8wCnZ-1590974327932)(C:\Users\24973\Desktop\筆記\繪圖\Scanner類\2)]
此時不再使用空格作爲分隔符,而是遇到換行才表示是一個數據。
3、使用Scanner獲取文件輸入:使用File對象作爲Scanner對象的輸入參數
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) throws FileNotFoundException{
//使用File類新建File對象作爲Scanner對象的參數
Scanner sc=new Scanner(new File("D:\\eclipse\\study_again\\ScannerFile.java")); //傳入完整的位置
while(sc.hasNextLine()) {
System.out.println("輸入的數據是:"+sc.nextLine());
}
}
}