標題:
解決next()與nextLine()無法同時使用的問題
[打印本頁]
作者:
鄭繼威
時間:
2023-4-26 20:28
標題:
解決next()與nextLine()無法同時使用的問題
本帖最後由 鄭繼威 於 2023-4-26 20:37 編輯
試試看,如果先使用 next() 再使用 nextLine() 會有什麼狀況?
在Scanner類別下,有next()與nextLine()兩種方法,
next()是以
空白
或換行為
區格
,nextLine()則是以
換行
為
區格
讀取整行
,當一起使用時,會出現nextLine()無法正常運作的問題,
除非你輸入的時候使用開空白來隔開
。
會這樣子的原因是因為
next()是抓取空白或\n換行字元
以前
的字串
,所以
next()抓完字串之後
\n
就被nextLine()抓住了
,因此
nextLine()只有抓到\n而已
,沒有抓到應該抓的字串。
解決方法:
推法1
打兩次nextLine()來
抵銷
第一次
\n
被吃掉
import java.util.Scanner;
public class Ch44
{
public static void main(String args[])
{
Scanner s=new Scanner(System.in);
String str1,str2;
System.out.print("請輸入一字串(不帶空白): ");
str1=s.next();
System.out.println(str1);
System.out.print("請輸入一字串(帶空白): ");
str2=s.nextLine();
str2=s.nextLine();
System.out.println(str2);
}
}
複製代碼
讓nextLine()重複抓取,
直到抓到有字串為止
。
import java.util.Scanner;
public class Ch44
{
public static void main(String args[])
{
Scanner s=new Scanner(System.in);
String str1, str2;
System.out.print("請輸入一字串(不帶空白): ");
str1=s.next();
System.out.println(str1);
System.out.print("請輸入一字串(帶空白): ");
while((str2=s.nextLine()).equals(""));
System.out.println(str2);
}
}
複製代碼
import java.util.Scanner;
public class Ch44
{
public static void main(String args[])
{
Scanner s=new Scanner(System.in);
String str1, str2;
System.out.print("請輸入一字串(不帶空白): ");
str1=s.next();
System.out.println(str1);
System.out.print("請輸入一字串(帶空白): ");
while(true)
{
str2=s.nextLine();
if(!str2.equals(""))
break;
}
System.out.println(str2);
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/)
Powered by Discuz! 7.2