1. 程式人生 > >java中scanner裡的NextLine()方法讀取資料為空並且為讓從鍵盤輸入

java中scanner裡的NextLine()方法讀取資料為空並且為讓從鍵盤輸入

今天我寫了一個程式碼,是用switch來實現的計算器,但是在讓輸入字元的時候,用的是nextLine()方法,可是走到這個方法的時候,並沒有讓我輸入,而是自己輸入了一個"",也就是空字串。

package com.baidu.switch1;

import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("請輸入第一個數字");
		int num1 = scanner.nextInt();
		System.out.println("請輸入第2個數字");
		int num2 = scanner.nextInt();
		System.out.println("請輸入你要進行什麼運算");
		String nextLine = scanner.nextLine();
		switch (nextLine) {
		case "+":
			System.out.println(num1+num2);
			break;
		case "-":
			System.out.println(num1-num2);
			break;

		default:
			System.out.println("其他的就不測試了");
			break;
		}
	}
}

上面的內容就是出現情況的程式碼

怎麼解決的 ?

後來我測試了一下,用next也是可以進行輸入的。

但是我需要搞明白為什麼。

next()一定要讀取到有效字元後才可以結束輸入,對輸入有效字元之前遇到的空格鍵、Tab鍵或Enter鍵等結束符,next()方法會自動將其去掉,只有在輸入有效字元之後,next()方法才將其後輸入的空格鍵、Tab鍵或Enter鍵等視為分隔符或結束符。

        簡單地說,next()查詢並返回來自此掃描器的下一個完整標記。完整標記的前後是與分隔模式匹配的輸入資訊,所以next方法不能得到帶空格的字串。

        而nextLine()方法的結束符只是Enter鍵,即nextLine()方法返回的是Enter鍵之前的所有字元,它是可以得到帶空格的字串的。