首先我們知道Java中Scanner類別中的方法next()和nextLine()都是用來取得使用者輸入的。
(推薦教學:java入門教學)
我們來看看二者的差異:
next()不會取得字元前/後的空格/Tab鍵,只取得字元。開始取得字元(字元前後不算)直到遇到空白/Tab鍵/回車截止取得;nextLine()會取得字元前後的空格/Tab鍵,遇到回車鍵截止。
範例:
import java.util.Scanner; import java.util.Vector; public class Main{ public static void main(String args[]) { Scanner reader=new Scanner(System.in); String s1=reader.nextLine(); String s2=reader.next(); System.out.println(s1); System.out.println(s2); } }
運行結果:
#可以看到next()只取得了askldfj字符,空格後面的都捨棄了!
將next()和nextLine()換個順序
import java.util.Scanner; import java.util.Vector; public class Main{ public static void main(String args[]) { Scanner reader=new Scanner(System.in); String s1=reader.next(); // String ss=reader.nextLine(); String s2=reader.nextLine(); System.out.println(s1); System.out.println(s2); } }
(推薦教學:java課程)
執行範例:
只輸入了aaaa bbbb cccc,系統自動輸出了兩行:
aaaa bbbb cccc
因為aaaa後面有個空格,next是不需要的,所以next讀取結束,剩菜剩飯bbbb cccc被nextLine撿了
解決方法是加上上面程式碼注意的nextLine()
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner reader=new Scanner(System.in); String s1=reader.next(); String s2=reader.nextLine(); System.out.println(s1); System.out.println(s2); } }
運行結果:
abcdefg abcdefg //剩下两行
輸入abcdefg後回車程序已經結束了,然後輸出了abcdefg和兩行換行,原因是因為nextLine吸收了next後的回車。
要十分注意的是,兩個nextLine盡量不要連在一起。而使用next不會出現這種情況,因為next吸取的第一個要求的是字符,最後一個要求是空格、Tab鍵、回車鍵。
以上是java中next()與nextLine()有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!