2016-02-22 164 views
0

我想要得到这个一遍又一遍地问问题,而用户输入一个'Y'。并停止并返回Event.displayFinalResults();当用户输入一个'N'虽然循环不工作在Java

我现在正在一个连续的循环。我错过了一些东西或者我的布局错了。任何帮助都会很棒。

  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(); 
      } 

再次感谢。

+0

只是要清楚,问题是在你先输入Y之后,然后输入N,它会留在while循环中吗? – Michael

+1

它比较字符,而不是字符串,所以我不认为这是问题。 – Michael

+0

我是新的。所以我知道我有一个连续的循环,因为一个小问题。我一直在努力尝试不同的方法几个小时,现在我处于障碍之中。 – Luke8h

回答

3

您的程序询问是/否问题,那么如果您回答是,它会在询问金额值之前再次询问相同的问题开始循环。

您可能需要在之前询问金额值,然后再次询问是/否问题。

如果用户回答否,循环将退出(请求多​​一个金额值后),但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(); 
+0

谢谢@Andreas! – Luke8h

0

我发现的一个问题是,您的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(); 
2

如下你可以做到这一点使用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(); 
-1

尝试以下操作进行:

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"); 
    } 

而是循环的,调用此方法时,你要问...

0

清除代码和紧凑:

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();