next():
一定要讀取到有效字元後才可以結束輸入,對輸入有效字元之前遇到的空格鍵、Tab鍵或Enter鍵等結束符,next()方法會自動将其去掉,隻有在輸入有效字元之後,next()方法才将其後輸入的空格鍵、Tab鍵或Enter鍵等視為分隔符或結束符。簡單地說,next()查找并傳回來自此掃描器的下一個完整标記。完整标記的前後是與分隔模式比對的輸入資訊,是以next方法不能得到帶空格的字元串
nextLine()
方法的結束符隻是Enter鍵,即nextLine()方法傳回的是Enter鍵之前的所有字元,它是可以得到帶空格的字元串的。
import java.util.Scanner;
public class NextAndnextLine {
public static void main(String[] args) {
String s1, s2;
Scanner sc = new Scanner(System.in);
System.out.print("請輸入第一個字元串:");
s1 = sc.nextLine();
System.out.print("請輸入第二個字元串:");
s2 = sc.next();
System.out.println("輸入的字元串是:" + s1 + " " + s2);
}
}
運作結果:
請輸入第一個字元串:home
請輸入第二個字元串:work
輸入的字元串是:home work
但如果把程式改一下, s1=sc.next(); s2=sc.nextLine();
運作結果是:
請輸入第一個字元串:home
請輸入第二個字元串:
輸入的字元串是:home
nextLine()自動讀取了被next()去掉的Enter作為他的結束符,是以沒辦法給s2從鍵盤輸入值。經過驗證,其他的next的方法,如double nextDouble() , float nextFloat() , int nextInt() 等與nextLine()連用時都存在這個問題,解決的辦法是:在每一個 next()、nextDouble()、nextFloat()、nextInt() 等語句之後加一個nextLine()語句,将被next()去掉的Enter結束符過濾掉