2013-10-13 3 views
0

Я пытался сделать программу, которая читает вашу температуру, дает вам обратную связь о том, насколько она хороша, выше или ниже средней температуры тела. После этого я хочу, чтобы программа спросила у пользователя, хочет ли он/она делать другое чтение, путем ввода. Для этого я использую оператор 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, не проверяя его. Это должно быть ==. Если вы проверяете логическое значение, вам не нужно явно сравнивать его с true или false. Вы можете использовать while (lokke)

+1

даже лучше, не должно быть '==' или '=' вообще. –

+0

@RohitJain Вы правы –

+0

Спасибо большое! Он сделал трюк;) Может быть, слишком поздно вечером для меня, так как я этого не видел, lol. Я приму ответ, как только stackoverflow позволяет мне :) – Makri

4

Это утверждение

while (lokke=true) { 

всегда оценивает в true качестве задания всегда оценивать их правильное значение боковой стороны. Вместо того, чтобы использовать

while(lokke == true) { 

или просто

while (lokke) { 
1

Другим вариантом было бы создать бесконечный цикл, и разорвать его, так что вы даже не нужно lokke variable.-

while(true) { 
    //... 
    if (svar == 'n') { 
     break; 
    } 
} 
Смежные вопросы