您好,登錄后才能下訂單哦!
這篇文章主要講解了“java之scan.next()與scan.nextline()函數(shù)如何使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“java之scan.next()與scan.nextline()函數(shù)如何使用”吧!
今天在做??途W(wǎng)編程練習(xí)題“l(fā)ength of last word”時,當(dāng)編寫實現(xiàn)代碼時,使用split()函數(shù)對輸入的字符串進行按空格符分割,確遇到了”奇葩“的問題,每次只能得到第一個字符串。
開始以為是split()函數(shù)用錯了,查了資料確定無誤后,覺得應(yīng)該是輸入的有問題。
于是進行了下面的實驗:
import java.util.Scanner; public class Solution { public static void main(String[] args) { String s_next = ""; String s_nextLine = ""; int count_next = 0; // 計數(shù) int count_nextLine = 0; // 計數(shù) Scanner scan = new Scanner(System.in); System.out.println("請輸入第一個字符串:"); s_nextLine = scan.nextLine(); // 此處使用nextLine(),便于對比 System.out.println("請輸入第二個字符串:"); s_next = scan.next(); // 第一次使用的next(); scan.close(); String [] split_next = s_next.split("\\s+"); String [] split_nextLine = s_nextLine.split("\\s+"); for(String s : split_next) System.out.println("子串next: "+ count_next++ +": "+ s + " 長度: " + s.length()+ '\n'); for(String s : split_nextLine) System.out.println("子串nextLine: "+ count_nextLine++ +": "+ s + " 長度: " + s.length()+ '\n'); } }
測試結(jié)果
也驗證了我的猜想
注意:
自省,也希望能對大家有所幫助,少走彎路。
用 Scanner 實現(xiàn)字符串的輸入有兩種方法,一種是next(),一種nextLine();
next() 一定要讀取到有效字符后才可以結(jié)束輸入,對輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結(jié)束符,next() 方法會自動將其去掉,只有在輸入有效字符之后,next()方法才將其后輸入的空格鍵、Tab鍵或Enter鍵等視為分隔符或結(jié)束符。
nextLine()方法的結(jié)束符只是Enter鍵。
簡言之,next方法不能得到帶空格的字符串,而nextLine()方法返回的是Enter鍵之前的所有字符,因此出現(xiàn)了上面測試樣例的結(jié)果。(ps.一定要注意?。?/p>
java的Scanner類可以用來接收鍵盤輸入的數(shù)據(jù)。next()和nextLine()方法用來接收字符串,next()方法接收字符串時遇到空格或回車結(jié)束輸入,而nextLine()方法可以接收空格,最后輸入回車才結(jié)束。下面用實例演示
兩者的區(qū)別:
package scanner; import java.util.Scanner; public class Scan { public static void main(String[] args) { String a,b; Scanner sc=new Scanner(System.in); System.out.println("next()方法接收字符串:"); a=sc.next(); System.out.println(a); } }
運行結(jié)果截圖:
package scanner; import java.util.Scanner; public class Scan { public static void main(String[] args) { String a,b; Scanner sc=new Scanner(System.in); System.out.println("nextLine()方法接收字符串:"); b=sc.nextLine(); System.out.println(b); } }
運行結(jié)果截圖:
兩個方法一起用可能會出錯:
package scanner; import java.util.Scanner; public class Scan { public static void main(String[] args) { String a,b; Scanner sc=new Scanner(System.in); System.out.println("next()方法接收字符串:"); a=sc.next(); System.out.println(a); System.out.println("nextLine()方法接收字符串:"); b=sc.nextLine(); System.out.println(b); } }
運行結(jié)果截圖:
這時程序已結(jié)束運行,不能再輸入。原因是next()方法遇到回車結(jié)束輸入,卻把最后的回車符留給了nextLine(),nextLine()方法接收了一個空字符串。
解決方法是next()方法后面再加一個nextLine()用來接收回車符,代碼如下:
package scanner; import java.util.Scanner; public class Scan { public static void main(String[] args) { String a,b; Scanner sc=new Scanner(System.in); System.out.println("next()方法接收字符串:"); a=sc.next(); System.out.println(a); a=sc.nextLine();//接收回車符 System.out.println("nextLine()方法接收字符串:"); b=sc.nextLine(); System.out.println(b); } }
運行結(jié)果截圖:
感謝各位的閱讀,以上就是“java之scan.next()與scan.nextline()函數(shù)如何使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對java之scan.next()與scan.nextline()函數(shù)如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。