nextLine跳過輸入的解決辦法

在java中使用掃描器Scanner時(shí),有一個(gè)很有趣的現(xiàn)象:

如果在nextline之前使用了next、nextInt等基本類型(companion)時(shí),會(huì)出現(xiàn)不能輸入的情況。

例如:

Scanner s = new Scanner(System.in);

String str = s.next();

System.out.println("空一行");

String str2 = s.nextLine();

System.out.println("再空一行");

結(jié)果:

原因:nextline是逐行輸入,于是會(huì)自動(dòng)讀取? 基本類型? 省略掉的“enter”,于是結(jié)束讀取

解決辦法(根據(jù)具體情況使用):

方法1:nextLine用在最前

方法2:在nextLine前再建立一個(gè)不用的輸入值,例如:

String str = s.nextInt();

String notuse = s.nextLine();

String str2 = s.nextLine();

方法3:使用next進(jìn)行輸入

String str = s.nextInt();

String notuse = s.next();

next()和nextLine()的區(qū)別:

next方法會(huì)忽略所有的空格、tab和回車,直到檢測(cè)到字符才會(huì)開始進(jìn)行輸入,當(dāng)出現(xiàn)空格、tab時(shí),不會(huì)再輸入(出現(xiàn)回車時(shí)會(huì)結(jié)束輸入)。

nextLine方法會(huì)檢測(cè)一行的輸入進(jìn)行操作,會(huì)將空格、tab一起錄入。

所以在對(duì)空格和tab沒有需求的時(shí)候,可以使用next方法進(jìn)行輸入。

String s1 = s.next();

System.out.println("空一行");

System.out.println(s1);

String notuse = s.nextLine();

String s2 = s.nextLine();

System.out.println(s2);

System.out.println("再空一行");

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 【程序1】 題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一...
    阿里高級(jí)軟件架構(gòu)師閱讀 3,390評(píng)論 0 19
  • Java經(jīng)典問題算法大全 /*【程序1】 題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子...
    趙宇_阿特奇閱讀 2,077評(píng)論 0 2
  • 【程序1】 題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔...
    葉總韓閱讀 5,227評(píng)論 0 41
  • 我希望在寂靜的黑夜里沒有太陽 我希望在晴朗的周末沒有烏云 我希望天不會(huì)早些亮 我希望聽見女兒的笑聲還在成長(zhǎng) 我希望...
    西域某乙閱讀 129評(píng)論 0 1
  • 3月的最后一天,還是0 offer,當(dāng)初的offer還要加s的話已成笑談。打臉啪啪響。 昨夜老鼠看了群里我說過的話...
    Stupid_Sakuragi閱讀 215評(píng)論 0 0

友情鏈接更多精彩內(nèi)容