簡體   English   中英

while循環在Java中不起作用

[英]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.

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