1. 程式人生 > >Java中從鍵盤錄入的三種方式及注意事項

Java中從鍵盤錄入的三種方式及注意事項

1、從控制檯接收一個字元

這裡寫圖片描述
此方法只能獲取一個字元,不能獲取其他資料型別,一般不會使用

2、從控制檯接收一個字串

這裡寫圖片描述
這種方法只能從控制檯接收字串,而無法接收其他資料型別,如果想接收其他資料型別,要對其進行轉換:

int num = Integer.parseInt(str)  // 假設str接收的是數字字串,例如123
double x = Double.parseInt(str)  // 假設str接收的是double型字串,例如3.14

這種方法比第一種強大,但如果想接收其他資料型別的話需要轉換,而且程式碼也稍微有點複雜,上面再轉換時用到的Integer類和Double類都是基本資料型別的包裝類,就是將基本資料型別包裝成一個物件,後面會有專門的介紹

3、 Scanner類

Scanner類是java最強大的一種接收方式,也是最常用的一種方式,它可以接收任意資料型別,具體使用方法如下:
這裡寫圖片描述
但是,有些時候它的使用也會出現一些問題:

問題一:
當你想接收一個整數時,在控制檯輸入了一個非整數,比如:a,這時就會丟擲 java.util.InputMismatchException異常。
解決方案:
1、進行異常處理
這裡寫圖片描述

2、用Scanner類提供的hasNext方法:
這裡寫圖片描述
hasNextInt()會判斷你輸入的是不是整數,是則返回true,不是則返回false,還有類似的hasNextDouble()等方法

問題二:
當你想想先接收一個int型資料,再接收一個字串時:
這裡寫圖片描述


你會發現無法輸入字串;
原因:
首先我們得知道nextLine()方法是是如何獲取一行的:當輸入回車時證明一行結束,而在我們輸入一個整數並敲擊回車後,nextLine()就讀取到了這一個回車符,檢驗方法:

System.out.print("1111111111");
System.out.print(line);
System.out.print("2222222222");

輸出結果為:
1111111111
2222222222
證明line是回車符

解決方案:
1、建立兩個Scanner物件,但不推薦,浪費儲存空間
2、全部用字串接收,讓後將其轉換成需要的資料型別