Day11-Scanner
Scanner介紹
Scanner 物件:
之前我們學的基本語法中我們並沒有實現程式和人的互動,但是 Java 給我們提供了這樣一個工具類,我們可以獲取使用者的輸入。
java.util.Scanner 是 Java5 的新特徵,我們可以透過 Scanner 類來獲取使用者的輸入。
基本語法:
Scanner s = new Scanner(System.in);
透過 Scanner 類的 next()與 nextLine()方法獲取輸入的字串:在讀取前我們一般需要使用 hasNext()與 hasNextLine()判斷是否還有輸入的資料。
java.util.Scanner 的解讀:
“java.util.Scanner” 是 Java 程式語言中的一個類。
“java.util” 是 Java 標準庫中的一個包(package)名稱,這個包中包含了很多實用的工具(utility)類和介面。
“Scanner” 是其中的一個類,它主要用於從標準輸入(通常是鍵盤輸入)、檔案等來源中讀取資料。它提供了方便的方法來解析各種基本資料型別和字串。
next()與 nextLine()方法分別的用法
一、next()
方法
-
next()
方法會從輸入流中讀取下一個單詞(以空白字元分隔)。 -
它會在遇到空白字元(如空格、製表符、換行符等)時停止讀取,並返回當前讀取到的內容。
-
假設使用者輸入 “hello world”,
next()
方法只會讀取到 “hello”,因為它在遇到第一個空白字元時就停止了讀取。//建立一個掃描器物件,用於接收鍵盤資料 Scanner scanner = new Scanner(System.in); System.out.println("使用next方法接收:"); //判斷使用者有沒有輸出字串 if(scanner.hasNext()){ //使用next方法接收——接收單個單詞關閉 String str=scanner.next(); //程式會等到使用者輸入 System.out.println("輸入的內容為:"+str); } //屬於IO流的類,用完就關閉,否則一直佔用資源!!!!!!!!!!!! scanner.close();//關閉
輸入Hello world時,只輸出一個Hello
使用next方法接收: Hello world 輸入的內容為:Hello
二、nextLine()
方法
nextLine()
方法會讀取輸入流中的一整行內容,包括空白字元。- 它會讀取到當前行的末尾(換行符處),並返回包括換行符之前的所有字元。
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline方法接收:");
if(scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("輸出的結果為:"+str);
}
scanner.close();
hasNext()
在 Java 中,Scanner
類的hasNext()
方法用於判斷輸入流中是否還有下一個輸入項(token)。
具體解釋如下:
一、返回值及用途
- 返回值型別:這個方法返回一個布林值。如果輸入流中還有下一個輸入項可讀取,它就返回
true
;如果沒有更多的輸入項可讀取,它就返回false
。 - 常見用途:通常在一個迴圈中使用這個方法來不斷檢查是否有更多的輸入,以便決定是否繼續讀取輸入。
二、輸入項的概念
- 定義:輸入項是指透過輸入流提供的、以分隔符(如空格、換行符等)分隔的一塊資料。具體的分隔規則取決於
Scanner
的構造方式和預設的分隔模式。 - 示例:如果使用者在控制檯輸入 “hello world”,這裡面的 “hello” 和 “world” 可以分別被看作兩個輸入項。如果輸入的是一個整數,那麼這個整數就是一個輸入項。
三、與其他方法配合使用
- 與
next()
方法配合:通常在使用next()
方法讀取輸入項之前,先使用hasNext()
方法進行判斷,以確保不會在沒有輸入項可讀取時呼叫next()
方法而導致異常。
遇見某一個類,選中,按住Ctrl鍵,單擊滑鼠,就進入了類的原始碼
實際應用:判斷輸入的是不是整數/小數
Scanner scanner = new Scanner(System.in);
//從鍵盤接收資料
int i1=0;
float i2=0.0f;
System.out.println("請輸入整數:");
if(scanner.hasNextInt()){
i1 = scanner.nextInt();
System.out.println("輸入的整數是:"+i1);
}else {System.out.println("你輸入的不是整數");}
System.out.println("請輸入小數:");
if(scanner.hasNextFloat()){
i2 = scanner.nextFloat();
System.out.println("輸入的小數是:"+i2);
}else {System.out.println("你輸入的不是小數");}
scanner.close();
實際應用:將輸入的資料求和、求平均值
//我們可以輸入多個數字,並求其總和與平均數。每輸入一個數字用回車確認。透過輸入非數字來結束輸入並輸出執行結果。
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入:");
//和
double sum=0;
//有多少個數
int num=0;
//透過迴圈判斷是否有數字,並進行求和和數量統計
while(scanner.hasNextDouble()){
sum+=scanner.nextDouble();
num=num+1;//num++
System.out.println("你輸入了第"+num+"個數,當前的和是"+sum);
}
System.out.println(num+"個數的和是"+sum);
System.out.println(num+"個數的平均數:"+(sum/num));
scanner.close();