Scanner 中next()和nexline()方法的区别
生活随笔
收集整理的這篇文章主要介紹了
Scanner 中next()和nexline()方法的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在java實現字符窗口的輸入時,很多人更喜歡選擇使用掃描器scanner,它操作起來比較簡單。在編程的過程中,我發現用scanner實現字符串的輸入有兩種方法,一種是next(),另一種是nextline(),這兩種有以下區別:
1. next()一定要讀取到有效字符后才可以結束輸入,對輸入有效字符之前遇到的空格鍵、tab鍵或enter鍵等結束符,next()方法會自動將其去掉,只有在輸入有效字符之后,next()方法才將其后輸入的空格鍵、tab鍵或enter鍵等視為分隔符或結束符。
2. ?簡單地說,next()查找并返回來自此掃描器的下一個完整標記。完整標記的前后是與分隔模式匹配的輸入信息,所以next方法不能得到帶空格的字符串。
3. nextline()方法的結束符只是enter鍵,即nextline()方法返回的是enter鍵之前的所有字符,它是可以得到帶空格的字符串的。
下面介紹使用方法的例子:
import?port?java.util.scanner; ?
public?class?nexttest{??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);??}??
} ?
運行結果:
請輸入第一個字符串:hello
請輸入第二個字符串:world輸入的字符串是:hello?world把程序改一下:
import?port?java.util.scanner; ?
public?class?nexttest{??public?static?void?main(string[]?args)?{??string?s1,s2;??scanner?sc=new?scanner(system.in);??system.out.print("請輸入第一個字符串:");??s1=sc.next(); ?system.out.print("請輸入第二個字符串:");??s2=sc.nextline(); ?system.out.println("輸入的字符串是:"+s1+"?"+s2);??}??
} ?
運行結果是:
請輸入第一個字符串:hello
請輸入第二個字符串:輸入的字符串是:hello可以看到,nextline()自動讀取了被next()去掉的enter作為他的結束符,所以沒辦法給s2從鍵盤輸入值。經過驗證,我發現其他的next的方法,如double nextdouble() , float nextfloat() , int nextint() 等與nextline()連用時都存在這個問題,解決的辦法是:在每一個 next()、nextdouble() 、 nextfloat()、nextint() 等語句之后加一個nextline()語句,將被next()去掉的enter結束符過濾掉。import?port?java.util.scanner; ?
public?class?nexttest{??public?static?void?main(string[]?args)?{??string?s1,s2;??scanner?sc=new?scanner(system.in);??system.out.print("請輸入第一個字符串:");??s1=sc.next(); ?sc.nextline(); ?system.out.print("請輸入第二個字符串:");??s2=sc.nextline(); ?system.out.println("輸入的字符串是:"+s1+"?"+s2);??}??
} ?運行結果是:
請輸入第一個字符串:hello
請輸入第二個字符串:world
輸入的字符串是:hello?world
轉載于:https://www.cnblogs.com/zhaoyuan72/p/10932654.html
總結
以上是生活随笔為你收集整理的Scanner 中next()和nexline()方法的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在cmd中使用python使用pip报错
- 下一篇: Java 8 Lambda表达式-接口实