首頁 > 軟體

Java中的Scanner類

2021-05-18 15:00:49

通過近期的一系列文章,我已經介紹了許多電腦與程式設計相關的知識。從今天開始,我們回到java知識體系來繼續瞭解java程式設計。

前面一些文章的案例中,我們會經常使用「System.out.println」這樣的語句來輸出一些字元串,在javap命令那一節,我也曾說過System.in返回的是一個列印流物件。今天,我將介紹Scanner類的作用,以及「System.in」這樣的輸入列印流怎樣配合Scanner來獲取到列印流中的值。如圖:

Scanner類用於獲取使用者輸入的資料。該類位於「java.util」包下面。scanner物件的創建需要傳入一個輸入流物件或者其他的資源物件,比如上圖中的案例中,傳入的「System.in」,我們也可以傳入一個檔案物件。Scanner類的常用構造器如下:

還是以圖一中的物件為例,使用的構造器參數是System.in,這是System類的一個輸入流屬性,該屬性的值是一個標準的列印流物件,可以獲取我們輸入給程式的資料。構建好的scanner物件有很多方法,最常使用的是next方法與nextLine方法。但是在從scanner物件取數時,最好先呼叫hasNextXxx()方法來判斷是否還有下一個資料。

hasNextXxx方法:

使用next方法取數:

只輸出了第一部分資料,空格後的則沒有

使用nextLine取數:

使用nextLine後輸出了第一行全部資料

總結:next()方法實際從scanner物件中取出的是下一個字元串。空格、換行會被認為是結束符號。nextLine()方法則是取出下一行的整行資料。

如果我們有一個需求如下:

當用戶輸入任意的兩個數,輸出這兩個數作「加減乘除」的結果。

怎麼完成這個需求呢?

分析:我們可以使用Scanner類來依次獲取到使用者輸入的兩個數,然後將獲取到的數賦值給兩個變數,再操作兩個變數進行「加減乘除」。由於是兩個數,所以我們需要呼叫scanner物件獲取使用者輸入的方法「next」兩次。需求中並未講明輸入的數為整數還是小數,所以我們使用double類型來接收這兩個數。考慮輸入的是double類型,我們採用hasNextDouble()方法判斷是否還有下一個數,使用nextDouble()方法取數。程式碼如下:

注意:

System.out.println("此兩數之和為:"+(a+b));此處必須要有括號。否則會先運行:"此兩數之和為:"+a得到: 此兩數之和為:1.5再加上3.3得到:此兩數之和為:1.53.3這裡會有運算的優先順序的影響。

好了,Java中Scanner類的使用就簡單的介紹到這裡。如果小夥伴們有興趣,可以自己動手練習一下。我們下期再見!


IT145.com E-mail:sddin#qq.com