日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第三次学JAVA再学不好就吃翔(part46)--Scanner类

發布時間:2023/12/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三次学JAVA再学不好就吃翔(part46)--Scanner类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考


文章目錄

      • Scanner類
      • Scanner獲取數據出現的問題



Scanner類


  • 概述

Scanner是在java.util包下的一個類,使用該類時我們需要導包。這個類被final修飾,也就是說,它是最終類,不能被繼承。它是一個可以使用正則表達式來解析基本類型和字符串的簡單文本掃描器。


  • 舉個例子
package com.guiyang.restudy3;import java.util.Scanner;public class D1Scanner {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("請輸入一個整數:");int x = scanner.nextInt();System.out.println("x = " + x);}}

輸出:

請輸入一個整數: 10 x = 10

如果這時,我們輸入字符a,則會報錯:

請輸入一個整數: a Exception in thread "main" java.util.InputMismatchExceptionat java.util.Scanner.throwFor(Unknown Source)at java.util.Scanner.next(Unknown Source)at java.util.Scanner.nextInt(Unknown Source)at java.util.Scanner.nextInt(Unknown Source)at com.guiyang.restudy3.D1Scanner.main(D1Scanner.java:10)

如果我希望錄入的只有int類型的數值,那么我們該怎么辦呢?

這時,我們可以使用hasNextInt()方法, 該方法會判斷鍵盤錄入的數值是否為int類型,如果是則返回true,不是則返回false

下面我們應用該方法:

package com.guiyang.object;import java.util.Scanner;public class Demo1_Scanner {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("請輸入一個整數:");if (scanner.hasNextInt()) {int x = scanner.nextInt();System.out.println("x = " + x);} else {System.out.println("輸入錯誤.");}}}

輸出:

請輸入一個整數: a 輸入錯誤.
  • 一般方法
    • hasNextXxx():可以判斷是否還有下一個輸入項,其中Xxx可以是Int,Double等類型,如果需要判斷下一個輸入項是否為字符串,Xxx可以省略;
    • nextXxx():可以獲取下一個輸入項,其中Xxx和hasNextXxx()中的Xxx意義相同,默認情況下,Scanner使用空格和回車作為分隔符。

Scanner獲取數據出現的問題


  • 常用的兩個方法
    • nextInt():獲取一個int類型的值
    • nextLine():獲取一個String類型的值

  • 舉個例子1

獲取分別多個int值和多個String值。

獲取多個int值:

package com.guiyang.restudy3;import java.util.Scanner;public class D1Scanner {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("請輸入第1個整數:");int x1 = scanner.nextInt();System.out.println("x1 = " + x1);System.out.println("請輸入第2個整數:");int x2 = scanner.nextInt();System.out.println("x2 = " + x2);}}

輸出:

請輸入第1個整數: 10 x1 = 10 請輸入第2個整數: 20 x2 = 20

獲取多個字符串:

package com.guiyang.restudy3;import java.util.Scanner;public class D1Scanner {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("請輸入第1個字符串:");String x1 = scanner.nextLine();System.out.println("請輸入第2個字符串:");String x2 = scanner.nextLine();System.out.println("x1 = " + x1 + ", x2 = " + x2);} }

輸出:

請輸入第1個字符串: Huang 請輸入第2個字符串: 9 x1 = Huang, x2 = 9
  • 舉個例子2(nextInt()和nextLine()一起用時出現的小問題)

我們知道nextInt()是錄入整數的方法,當我們錄入一個整數(比如10)再敲回車的時候,其實在鍵盤上錄入的是10\r\n,而nextInt()方法只獲取到10就結束了,如果此時我們立馬用nextLine()方法獲取字符串,那么nextLine()方法就會遇到nextInt()方法未獲取的\r\n,nextLine()方法只要一遇到\r\n就會結束方法,不再獲取。


我們看下面一段代碼,驗證我們剛剛說的段話:

package com.guiyang.restudy3;import java.util.Scanner;public class D1Scanner {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("請輸入第1個整數:");int x1 = scanner.nextInt();System.out.println("請輸入第2個字符串:");String x2 = scanner.nextLine();System.out.println("x1 = " + x1 + ", x2 = " + x2);} }

輸出:

請輸入第1個整數: 10 請輸入第2個字符串: x1 = 10, x2 =

當我們錄入10再敲回車后,JAVA沒有給我們輸入字符串的機會,直接結束。


那么對于這種問題有沒有什么解決辦法呢?

解決方案1:創建兩個鍵盤錄入對象即可:

package com.guiyang.restudy3;import java.util.Scanner;public class D1Scanner {public static void main(String[] args) {Scanner scanner1 = new Scanner(System.in);System.out.println("請輸入第1個整數:");int x1 = scanner1.nextInt();Scanner scanner2 = new Scanner(System.in);System.out.println("請輸入第2個字符串:");String x2 = scanner2.nextLine();System.out.println("x1 = " + x1 + ", x2 = " + x2);} }

輸出:

請輸入第1個整數: 10 請輸入第2個字符串: Huang x1 = 10, x2 = Huang

雖然這樣解決了我們的燃眉之急,但是創建2個對象會浪費內存空間,所以不支持。

解決方案2:2次都錄入字符串,都用nextLine()方法,再將整數字符串轉換為整數。這里我們就不做演示了,等學到相關方法時,回頭解決這個問題。

總結

以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part46)--Scanner类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。