hasNextInt() :判斷是否還有下一個輸入項,其中Xxx可以是Int,Double等。如果需要判斷是否包含下一個字元串,則可以省略Xxx nextInt(): 獲取下一個輸入項。Xxx的含義和上個方法中的Xxx相同,預設情況下,Scanner使用空格,回車等作為分隔符 public stat ...
hasNextInt() :判斷是否還有下一個輸入項,其中Xxx可以是Int,Double等。如果需要判斷是否包含下一個字元串,則可以省略Xxx
nextInt(): 獲取下一個輸入項。Xxx的含義和上個方法中的Xxx相同,預設情況下,Scanner使用空格,回車等作為分隔符
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象
if(sc.hasNextInt()) { //判斷鍵盤錄入的是否是int類型的數據
int i = sc.nextInt(); //鍵盤錄入的數據存儲在i中
System.out.println(i);
}else {
System.out.println("輸入的類型錯誤");
}
}
bug問題:先用nextInt()接收int類型,再用nextLine()接收字元串的時候,會導致nextLine() 直接把回車接收到了, nextLine 不能繼續接收字元串了
1)先獲取一個數值後,再創建一個新的鍵盤錄入對象獲取字元串。
2)把所有的數據都先按照字元串獲取,然後要什麼,你就對應的轉換為什麼。(後面講)
出現問題代碼:
Scanner sc = new Scanner(System.in);
System.out.println("請輸入第一個整數:");
int i = sc.nextInt(); //先用nextInt()接收int類型
System.out.println("請輸入第二個字元串:");
String line2 = sc.nextLine(); //再用nextLine()接收字元串
System.out.println("i = " + i + ", line2 = " + line2); //line2不等著你去接收 就執行了這句輸出語句
為什麼出現問題呢?
nextInt()是鍵盤錄入整數的方法,當我們錄入10的時候
其實在鍵盤上錄入的是10和\r\n,nextInt()方法只獲取10就結束了
nextLine()是鍵盤錄入字元串的方法,可以接收任意類型,但是他憑什麼能獲取一行呢?
通過\r\n,只要遇到\r\n就證明一行結束
解決:①
Scanner sc = new Scanner(System.in);
System.out.println("請輸入第一個整數:");
int i = sc.nextInt(); //先用nextInt()接收int類型
System.out.println("請輸入第二個字元串:");
Scanner sc2 = new Scanner(System.in); //再創建一個新的鍵盤錄入對象
String line = sc2.nextLine(); //再用新的鍵盤錄入對象的nextLine()接收字元串
System.out.println(i);
System.out.println(line);
②(下麵這種方案 明天就講 我先寫在這裡 不懂的話 明天學了就明白了)
Scanner sc = new Scanner(System.in);
System.out.println("請輸入第一個整數:");
String lin = sc2.nextLine(); //先用nextLine()接收一個數字型的字元串 比如 "100"
int i = Integer.parseInt(lin);
System.out.println("請輸入第二個字元串:");
String line = sc2.nextLine(); //再用新的鍵盤錄入對象的nextLine()接收字元串
System.out.println(i);
System.out.println(line);