2013-10-13 98 views
0

我试图使程序读取你的体温,给你一个反馈,它是,以上,下或插图中的平均bodytemperature有多好。在此之后,我希望程序通过输入询问用户他/她是否想要做另一次阅读。为此我使用一个switch语句。它几乎可以正常工作:用户输入y,程序再次循环,一切都很好。但是,当用户输入n时,程序仍然重新启动?任何人都可以帮我解释为什么会发生这种情况?走出while循环用switch语句

代码:

import java.util.*; 

class Uke2Ekstra17{ 
    public static void main(String[]args){ 

    Scanner input=new Scanner(System.in); 
    boolean lokke=true; 


    while(lokke=true){ 
     System.out.println("Vennligst oppgi temperaturen din, så skal du få vite om du ligger over, under eller innenfor gjennomsnittstemperaturen! Skriv her: "); 
     double temp=input.nextDouble(); 

     if(temp<36.5){ 
     System.out.println("Du ligger under gjennomsnittet med " + (36.5-temp) + " grader."); 
     }else if(temp>36.5 && temp<37.5){ 
     System.out.println("Du ligger innenfor gjennomsnittstemperaturen."); 
     }else{ 
     System.out.println("Du ligger over gjennomsnittet med " + (temp-37.5) + " grader."); 
     } 
     System.out.println("Vil du gjøre en ny maaling? y/n: "); 

     char svar=input.next().charAt(0); 

     switch(svar){ 

     case 'y': 
     lokke=true; 
     break; 
     case 'n': 
     lokke=false; 
     break; 
     } 
    } 
    } 
} 

回答

8

你的布尔while (lokke=true)分配lokke,不检查它。它应该是一个==。如果你虽然检查一个布尔值,你不需要把它比作truefalse明确。您可以使用while (lokke)

+1

甚至更好,根本不应该是'=='或'='。 –

+0

@RohitJain你是正确的 –

+0

非常感谢!它做了诡计;)也许晚上对我来说太晚了,因为我没有看到它,哈哈。只要stackoverflow允许我,我会接受答案:) – Makri

4

本声明

while (lokke=true) { 

始终计算为true的分配总是为自己的右手边值。而是使用

while(lokke == true) { 

或者干脆

while (lokke) { 
1

另一种选择是创建一个无限循环,并打破它,所以你甚至不需要lokke variable.-

while(true) { 
    //... 
    if (svar == 'n') { 
     break; 
    } 
}