我使用不apear:nextLine(),當我運行我的代碼
public static final Scanner CONSOLE = new Scanner(System.in);
,然後在我的主要方法:
System.out.print("\nPlease choose a color for the circle between the following options:\nBlack\nRandom");
String colorChoice = CONSOLE.nextLine();
colorChoice = colorChoice.trim();
程序將顯示「請選擇一個顏色」,但然後在允許任何用戶輸入之前終止。我不知道爲什麼它不會工作。
這是輸出:
請輸入一個半徑爲50和400之間的循環:[DrJava輸入框]
請選擇下列選項之間的圈顏色: 黑色 隨機>
編輯1:
我改了行System.out.print("\nPlease choose a color for the circle between the following options:\nBlack\nRandom");
到System.out.print("\nPlease choose a color for the circle between the following options: Black, Random");
看是否\n
是問題。它仍然不起作用。
我包括一個while循環(用於檢查的值),使代碼讀取後:
System.out.print("\nPlease choose a color for the circle between the following options: Black, Random");
String colorChoice = CONSOLE.nextLine();
colorChoice = colorChoice.trim();
boolean matchesChoice = matchesChoice(colorChoice, "black", "random");
while(matchesChoice != true){
System.out.print("\nInvalid color choice. Please try again.");
colorChoice = CONSOLE.nextLine();
colorChoice = colorChoice.trim();
matchesChoice = matchesChoice(colorChoice, "black", "random");
}
這種情況的輸出讀取:
請輸入一個半徑爲50和400之間的循環: [DrJava輸入框]
請爲以下選項之間的圓圈選擇一種顏色:黑色,隨機 顏色選擇無效。請再試一次。 [DrJava輸入框]
因此,CONSOLE.nextLine()在循環內工作,但不在外部。無論我作爲用戶輸入插入(正確與否),它只是重複「無效的顏色選擇」行和輸入。
我認爲它是由緩衝區延遲引起的,nextLine一直持續閱讀,直到它找到一個換行符「\ n」,然後停止,你正在打印的語句在其中打印兩個換行符。我猜測''CONSOLE.nextLine()'是在輸出緩衝區打印完所有'print'語句之前執行的,所以當print語句繼續時,它給'nextLine()'一些東西讀取。如果是這樣的話,那很奇怪。嘗試像這樣打印:'「...選項:黑色,隨機:「' – Everyone
」然後在允許任何用戶輸入之前終止。「它允許我在終止於我的IDE之前輸入內容 –
您需要提供與問題相關的漏洞代碼。一個錯誤/異常???? –