Java流程控制 Scanner
Scanner物件
基本語法:
Scanner sc = new Scanner(System.in) ;
通過 Scanner類 的 next() 與 nextLine() 方法獲取輸入的字串,,在讀取前我們一般需要使用 hasNext() 與 hasNextLine() 判斷是否還有輸入的資料;
其實上圖的意思就是,比如:nextlnt():只讀取int值,就是隻能讀取整數型別的資料,如果輸入了非整型的資料(浮點型字串等)就會報錯。
nextFloat()、nextDouble()這些也是以此類推,只能讀取符合該型別的資料。
next()和nextLine()的區別:
next():只讀取輸入直到空格。它不能讀兩個由空格或符號隔開的單詞。此外,next()在讀取輸入後將游標放在同一行中。(next()只讀空格之前的資料,並且游標指向本行)
nextLine():讀取輸入,包括單詞之間的空格和除回車以外的所有符號(即。它讀到行尾)。讀取輸入後,nextLine()將游標定位在下一行。
程式碼演示:
public class Text {
public static void main(String []args) {
Scanner input = new Scanner(System.in);
System.out.println("請輸入一個字串(中間能加空格或符號)");
String a = input.nextLine();
System.out.println("請輸入一個字串(中間不能加空格或符號)");
String b = input.next();
System.out.println("請輸入一個整數");
int c;
c = input.nextInt();
System.out.println("請輸入一個double型別的小數");
double d = input.nextDouble();
System.out.println("請輸入一個float型別的小數");
float f = input.nextFloat();
System.out.println("按順序輸出abcdf的值:");
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(f);
}
}
執行結果:
請輸入一個字串(中間能加空格或符號)
我愛王威
請輸入一個字串(中間不能加空格或符號)
HelloWord
請輸入一個整數
520
請輸入一個double型別的小數
12.26
請輸入一個float型別的小數
3.1415926
按順序輸出abcdf的值:
我愛王威
HelloWord
520
12.26
3.1415925
public class inputInformation {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in); //構造Scanner類的物件scan,接收從控制檯輸入的資訊
System.out.println("請輸入你的姓名");
String name = scan.nextLine();//接收一個字串,可以加除Enter以外的所有符號,包括空格和Tab
System.out.println("請輸入你的ID");
String ID ;
while(scan.hasNextLine()) { // hasNextLine()方法判斷當前是否有輸入,當鍵盤有輸入後執行迴圈
if(scan.hasNextInt()) { // 判斷輸入的值是否為整數型別,當為整數型別時執行迴圈
ID = scan.nextLine();
System.out.println("你輸入的姓名為:"+name);
System.out.println("你輸入的ID為:"+ID);
break;
} else {
System.out.println("請輸入數字哦!");
ID = scan.nextLine();
continue;
}
}
}
}
輸出結果:
請輸入你的姓名
西地那非
請輸入你的ID
a1
請輸入數字哦!
1