1. 程式人生 > 實用技巧 >Java之Scanner類

Java之Scanner類

參考連結:https://www.bilibili.com/video/BV12J41137hu?p=33

  • 基本結構
    兩種方法,Scanner.Next()以及Scanner.NextLine():
public class TestScanner {
	
	public static void main(String[] args) {
		//新建Scanner物件
		Scanner scanner = new Scanner(System.in);
		//使用者輸出,有兩種用法
		//1.Scanner.next,搭配Scanner.hasNext();
		//2.Scanner.nextLine,搭配Scanner.hasNextLine();
		
		//方法1
		System.out.println("請輸入:");
		if(scanner.hasNext()) 
		{
			System.out.println("輸入的是"+scanner.next());
		}
		//此方法是以空格為結束符的,所以無法接收到含有空格的字串,而且如果字串開始前有空格,則空格省略
		
		//方法2
		System.out.println("請輸入:");
		if(scanner.hasNextLine()) 
		{
			System.out.println("輸入的是"+scanner.nextLine());
		}
		//此方法是以Enter為結束符的,所以可以接收到含有空格的字串,而且如果字串開始前有空格,則空格不會省略
		
		
		//關閉Scanner物件,要有關閉IO流的好習慣
		scanner.close();
	}

}
result:
請輸入:
23    32   3213 
輸入的是23
請輸入:
輸入的是    32   3213
  • 擴充套件
    例如Scanner.nextInt()...可以給定具體接受的資料型別
public class TestScanner2 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
	    System.out.println("請輸入:");
	    //輸入int型別
	    if(scanner.hasNextInt()) {
	    	System.out.println("輸入的是int型 "+scanner.nextInt());
	    }
	    //若輸出的是float型
	    if(scanner.hasNextFloat()) {
	    	System.out.println("輸入的是float型 "+scanner.nextFloat());
	    }
	    scanner.close();
	}
}
result1:
請輸入:
12
輸入的是int型 12
12
輸入的是float型 12.0

result2:
請輸入:
12.1
輸入的是float型 12.1
  • 一個簡單應用例子
    利用連續輸入實現一個例項,求多個數的平均數。要求輸入多個數,以非數的字元結束輸入
public class TestScnaner3 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		double score = 0.0;
		int number = 0;
		System.out.println("請輸入:");
		while(scanner.hasNextDouble()) {  //nextDouble()就不是以空格為終止符,而是以非double的輸入為終止符
			score+=scanner.nextDouble();
			number++;
		}
		score/=number;
		System.out.println("平均數是 "+score);
		scanner.close();
	}
}
請輸入:
1 2 3 4 5 6 7 8 9 10 s
平均數是 5.5