java學(xué)習(xí)記錄:(2) Scanner的使用

Scanner的調(diào)用:
new Scanner(System.in);
Scanner scanner = new Scanner(System.in);
Scanner類中的詳解:
Scanner : 指掃描器
System.in : 指系統(tǒng)輸入
Scanner的方法:
注:Line 是指 行 的意思
public boolean hasNext()????????//判斷掃描器中當(dāng)前掃描位置后是否還存在下一段
public boolean hasNextLine()????????//如果在此掃描器的輸入中存在另一行,則返回 true。
public String next()????????//查找并返回來(lái)自此掃描器的下一個(gè)完整標(biāo)記。
public String nextLine()????????//此掃描器執(zhí)行當(dāng)前行,并返回跳過(guò)的輸入信息。
代碼演示:
//把鍵盤(pán)錄入的信息全部打印輸出到控制臺(tái)
public static void main(String[] args) {
????????Scanner s = new Scanner(System.in);
? ? ? ? while(s.hasNextLine()){
????????????????System.out.println(s.nextLine());
????????}
}
使用 Scanner方法前的注意事項(xiàng):
1、使用nextInt()時(shí)輸入的內(nèi)容必須為數(shù)字,如果輸入了字符串,程序結(jié)束并且會(huì)報(bào)異常:java.util.InputMismatchException
代碼演示:
//把鍵盤(pán)錄入的信息全部打印輸出到控制臺(tái)?
public static void main(String[] args) {
????????Scanner scanner = new Scanner(System.in);
? ? ? ? int i = scanner.nextInt();
????????System.out.println(i);
}
2、注:nextInt()和next()判斷讀取結(jié)束的標(biāo)識(shí)是空白符;比如空格,比如回車(chē),比如tab…,而nextLine()的結(jié)束標(biāo)識(shí)是回車(chē)也就是“\r”
代碼演示:
//把鍵盤(pán)錄入的信息全部打印輸出到控制臺(tái)?
public static void main(String[] args) {
????????Scanner scanner = new Scanner(System.in);
????????int i = scanner.nextInt();
????????System.out.println(i);
}
//把鍵盤(pán)錄入的信息全部打印輸出到控制臺(tái)?
public static void main(String[] args) {
????????Scanner scanner = new Scanner(System.in);
? ? ? ? String s = scanner.nextLine();
????????System.out.println(s);
}
3、next()和nextInt()一定要讀取到有效字符后才可以結(jié)束輸入,對(duì)輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結(jié)束符,next()方法會(huì)自動(dòng)將其去掉,而nextLine()不管是否讀到有效字符,遇到結(jié)束符回車(chē)都會(huì)結(jié)束
//把鍵盤(pán)錄入的信息全部打印輸出到控制臺(tái)?
public static void main(String[] args) {
????????Scanner scanner = new Scanner(System.in);
? ? ? ? String s = scanner.next();
????????System.out.println(s);
? ? ? ? String ss = scanner.nextLine();
? ? ? ? System.out.println(ss);
}
4、 next()和nextInt()讀到有效字符后不會(huì)將結(jié)束符擦除,而nextLine()是會(huì)將結(jié)束符擦除的,看如下案
例:
public class Test {
????public static void main(String[] args){
????????Scanner scanner = new Scanner(System.in);
????????String str = scanner.next();
????????System.out.println("str:"+str);????????//輸出字符串的內(nèi)容
????????String newLine = scanner.nextLine();
????????System.out.println("newLine:"+newLine);????????//輸出新行內(nèi)容
????????String newLine2 = scanner.nextLine();
????????System.out.println("newLine2:"+newLine2);????????//輸出新行內(nèi)容
????}
}
//把鍵盤(pán)錄入的信息全部打印輸出到控制臺(tái)?
public static void main(String[] args) {
????????Scanner scanner = new Scanner(System.in);
? ? ? ? String next = scanner.next();
????????System.out.println(next);
????????String nextLine = scanner.nextLine();
????????System.out.println(nextLine);
????????String nextLine2 = scanner.nextLine();
????????System.out.println(nextLine2);
}
5、同一個(gè)Scanner對(duì)象,不能先錄入int,再錄入String值,會(huì)出異常。
//方法一
public static void main(String[] args) {
? ??????Scanner scanner1 = new Scanner(System.in);
? ? ? ? int i = scanner1.nextInt();
? ??????Scanner scanner2 = new Scanner(System.in);
? ? ? ? String s = scanner2.nextLine();
????????System.out.println(i + ":"+s);
}
//方法二
public static void main(String[] args) {
?????Scanner scanner1 = new Scanner(System.in);?
????????String num1 = scanner1.nextLine();
????????String num2 = scanner1.nextLine();
????????int num3 = Integer.valueOf(num1);
????????System.out.println(num3+":" +num2);
}