2013-12-16 48 views
0

它一切都很好。但是當它到達結尾,並詢問我是否想再試一次時,它只是終止程序,我不會輸入y或n我該如何讓這個哨兵控制迴路起作用?

編輯:對不起,我應該在發佈前更好地檢查預覽,但似乎就像我在提交時搞砸了代碼一樣。這裏是我的實際代碼

import java.util.Scanner; 

class MillionDollarYears2 
{ 
public static void main(String[] args) 
{ 
    String answer = "y"; 
    double dollars; 
    final double interest = 0.05; 
    int year = 0; 
    Scanner scan = new Scanner(System.in); 

    while(answer.equals("y")) 
    { 
     System.out.println("How many dollars are deposited?"); 
     dollars = scan.nextDouble(); 


     while(dollars < 1000000.00) 
     { 
      dollars = dollars + dollars * interest; 
      year = year + 1; 
     } 
      System.out.println("It took " + year + " years to reach your goal."); 

      System.out.println("Would you like to try again? (y or n)"); 
      answer = scan.nextLine(); 


    } 

} 

}

回答

2

您還沒有進入Y/N回答正確的變量。 您的相關片段(含澄清評論):

System.out.println("It took " + year + " years to reach your goal");            
answer = scan.nextLine(); // This seems like a mistake 

System.out.println("Would you like to try again? (y or n)"); 
dollars = scan.nextLine(); // This should be saved to answer, which the loop checks against 

因此,更正後,while循環的結束應該是這個樣子:

System.out.println("It took " + year + " years to reach your goal");            

System.out.println("Would you like to try again? (y or n)"); 
answer = scan.nextLine(); 
0

它終止,因爲在此之後行:

System.out.println("It took " + year + " years to reach your goal");            
answer = scan.nextLine(); 

答案可能包含一個不是「y」的值並終止while循環。

你問後再次嘗試這樣做:

dollars = scan.nextLine(); 

變化dollarsanswer該行之前刪除answer = scan.nextLine();兩行。

0

變化scan.nextLine()scan.next()

工作PROG:

public static void main(String[] args) 
{ 
    String answer = "y"; 
    double dollars; 
    final double interest = 0.05; 
    int year = 0; 
    Scanner scan = new Scanner(System.in); 

    while(answer.equals("y")) 
    { 
     System.out.println("How many dollars are deposited?"); 
     dollars = scan.nextDouble(); 


     while(dollars < 1000000.00) 
     { 
      dollars = dollars + dollars * interest; 
      year = year + 1; 
     } 
      System.out.println("It took " + year + " years to reach your goal."); 

      System.out.println("Would you like to try again? (y or n)"); 
      answer = scan.next(); 


    } 

}