互動式簡易迴圈計算器-nextLine()和next()等詳解
阿新 • • 發佈:2021-06-30
首先搞清楚nextLine() 和 next()、nextInt()、nextDouble()、nextFloat()方法讀取問題
nextInt()讀取結果為一個int型別資料,返回int值
nextFloat()讀取結果為float型別,返回float值
next()讀取結果為String型別,返回string型別
next Line()讀取結果為String型別,返回string型別
-
nextLine()也是以回車符為結束,並且只是以回車符結束,並且會讀取回車符
-
next(),nextInt()、nextDouble()和nextFloat()看到空格符或回車符都認為讀取結束,此時不會讀取回車符。
意思就是回車符只會留在這裡等待下一個可以讀取回車符號的讀取流來把這個回車符接收掉 -
問:在使用nextLine()讀取字串的時候,有時候還沒來得及輸入就直接跳過了?
解決方式:參考連結
利用nextLine()方法讀取一個空回車符
input.nextLine();
如果訊息佇列裡面有回車符 可以加一個 input.nextLine();把訊息佇列清空,然後再去使用nextLine()方法
簡易計算器的實現
-
此處使用者輸入x的值,空格或者回車(假設此處是回車),再輸入y的值;
-
此時快取中有:x的值、回車、y的值;
-
接著用nextDouble()方法接收x的值,遇到回車認為接收這個動作結束並且不會讀取回車符;
-
此時快取中還剩:回車、y的值;
-
nextDouble()方法和next()類似,遇到第一個有效字元才開始接收,此時快取中第一個位置是空格或者回車,為無效字元,因此接下來的nextDouble()方法會跳過回車符,不接收,遇到y的值後判斷為有效字元則接收。
package kaka; import java.util.Scanner; public class CalDemo { //加法 public static void add(){ Scanner scanner=new Scanner(System.in); System.out.println("請輸入兩個數字,以空格或者回車隔開: "); double x=scanner.nextDouble();//鍵盤輸入x的值 double y=scanner.nextDouble();//鍵盤輸入y的值 System.out.println(x+y); } //減法 public static void minus(){ System.out.println("請輸入兩個數字,以空格或者回車隔開: "); Scanner scanner=new Scanner(System.in); double x=scanner.nextDouble();//鍵盤輸入x的值 double y=scanner.nextDouble();//鍵盤輸入y的值 System.out.println(x-y); } //乘法 public static void mul(){ System.out.println("請輸入兩個數字,以空格或者回車隔開: "); Scanner scanner=new Scanner(System.in); double x=scanner.nextDouble();//鍵盤輸入x的值 double y=scanner.nextDouble();//鍵盤輸入y的值 System.out.println(x*y); } //除法 public static void div(){ System.out.println("請輸入兩個數字,以空格或者回車隔開: "); Scanner scanner=new Scanner(System.in); double x=scanner.nextDouble();//鍵盤輸入x的值 double y=scanner.nextDouble();//鍵盤輸入y的值 System.out.println(x/y); } public static void main(String[] args){ for(int i=1;i<100;i++) { System.out.println("加法計算請輸輸入1"); System.out.println("減法計算請輸輸入2"); System.out.println("乘法計算請輸輸入3"); System.out.println("除法計算請輸輸入4"); Scanner scanner=new Scanner(System.in); int x=scanner.nextInt(); switch(x){ case 1: add();break; case 2: minus();break; case 3: mul();break; case 4: div();break; default: System.out.println("請輸入1到4的數字"); break; } } } }