[英]while loop not working in Java
我試圖讓這個問題在用戶輸入'Y'
一遍又一遍地問。 然后停止並返回Event.displayFinalResults();
當用戶輸入'N'
我現在正在連續循環。 我錯過了一些東西或我的布局錯了。 任何幫助都會很棒。
System.out.println("Is there anymore amounts you want to add?(Y/N): ");
Scanner keyboard = new Scanner(System.in);
char choice = keyboard.next().charAt(0);
choice = Character.toUpperCase(choice);
if(choice == 'Y')
{
do
{
System.out.println("Is there anymore amounts you want to add?(Y/N): ");
choice = keyboard.next().charAt(0);
choice = Character.toUpperCase(choice);
readValidateAmountType();
readValidateAmount();
}
while(choice =='Y');
}
else
{
Event.displayFinalResults();
}
再次感謝。
您的程序會詢問“是/否”問題,然后如果您回答“是”,則會進入一個循環,該循環首先詢問相同的問題,然后再詢問金額值。
您可能需要先詢問金額值, 然后再問是/否問題。
如果用戶回答“否”,則循環將退出(在詢問另外一個金額值之后),但不會執行Event.displayFinalResults()
。 刪除else
子句,以便Event.displayFinalResults()
是否輸入if
語句。
System.out.println("Is there anymore amounts you want to add?(Y/N): ");
Scanner keyboard = new Scanner(System.in);
char choice = keyboard.next().charAt(0);
choice = Character.toUpperCase(choice);
if (choice == 'Y')
{
do
{
readValidateAmountType();
readValidateAmount();
System.out.println("Is there anymore amounts you want to add?(Y/N): ");
choice = keyboard.next().charAt(0);
choice = Character.toUpperCase(choice);
}
while(choice =='Y');
}
Event.displayFinalResults();
您可以使用break;
執行此操作break;
如下:
do {
System.out.println("Is there anymore amounts you want to add?(Y/N): ");
choice = keyboard.next().charAt(0);
choice = Character.toUpperCase(choice);
if (choice !='Y') {
break;
}
readValidateAmountType();
readValidateAmount();
} while(true);
Event.displayFinalResults();
我看到的一個問題是,您的while
循環位於if
語句內部。 一旦退出while循環,就不會在else
塊中運行代碼,因為if
條件已經為真。
因此,請嘗試刪除else塊。 一旦while
循環退出,這將確保Event.displayFinalResults
方法被調用。
System.out.println("Is there anymore amounts you want to add?(Y/N): ");
Scanner keyboard = new Scanner(System.in);
char choice = keyboard.next().charAt(0);
choice = Character.toUpperCase(choice);
if(choice == 'Y')
{
do
{
System.out.println("Is there anymore amounts you want to add?(Y/N): ");
choice = keyboard.next().charAt(0);
choice = Character.toUpperCase(choice);
readValidateAmountType();
readValidateAmount();
}
while(choice =='Y');
}
Event.displayFinalResults();
代碼清晰,緊湊:
Scanner keyboard = new Scanner(System.in);
char choice;
do {
System.out.println("Is there anymore amounts you want to add?(Y/N): ");
choice = keyboard.next().charAt(0);
choice = Character.toUpperCase(choice);
if(choice == 'Y') {
readValidateAmountType();
readValidateAmount();
}
} while(choice == 'Y');
Event.displayFinalResults();
嘗試以下方法:
public void answering(char answer){
if(answer == 'Y' || answer == 'y'){
System.out.println("Answering");
} else if(answer == 'N' || answer == 'n'){
System.out.println("Not answering");
}
如果要詢問,請調用此方法,而不是循環執行...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.