簡體   English   中英

Java 程序使用掃描儀 class 和打印語句跳過用戶輸入

[英]Java Program skips over user input using the Scanner class and print statements

我以前從未遇到過此類問題,但我最近的三個項目都遇到了同樣的問題,由於某種原因,Java 跳過了用戶的輸入。 無論提供什么幫助都將不勝感激!

注意:為了給出這個問題的一些背景知識,程序應該在 do-while 循環中運行游戲。 第一輪完成后,這些代碼行的目的是讓用戶玩更多的游戲輪次。 它將用戶的輸入存儲在一個字符串中,然后獲取第一個字符。 如果字符是“y”或“Y”,則將開始另一輪。 如果字符不是“y”或“Y”,程序將結束。

int iterations = 0;
do{
    System.out.println(result + " Would you like to play again:");
    String strHolder = keyboard.nextLine();
    char repeatOption = strHolder.charAt(0);
    iterations++;
} while(repeatOption == 'y' || repeatOption == 'Y');

所以游戲本身運行良好,但是當我進入詢問用戶是否想再次玩的程序的這一部分時,這發生在我的終端中:

Would you like to play again:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0

因此,如您所見,程序跳過了用戶輸入,並且沒有“第一個字符”來設置 char repeatOption。 再次感謝您花時間閱讀此問題,我們將不勝感激任何支持。

掃描儀緩沖區不是空的(可能是新行字符),當您的程序試圖從用戶那里獲取輸入時,掃描儀正在從緩沖區中獲取值,並且 nextLine() 方法沒有返回任何內容。

可能的解決方案:

  • 將 nextLine() 更改為不使用新行字符 (\n) 的其他方法
  • 在從用戶獲取值之前刷新緩沖區

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM