使用switch语句退出while循环

时间:2013-10-13 21:35:15

标签: java loops while-loop switch-statement break

我试图制作一个读取温度的程序,给你一个关于它有多好,在平均体温之上,之下或之间的反馈。在此之后,我希望程序通过输入询问用户他/她是否想要进行另一次阅读。为此,我使用switch语句。它几乎正常工作:用户输入y,程序再次循环,一切都非常好。但是,当用户输入n时,程序仍然重启?谁能帮我解释为什么会这样?

代码:

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

3 个答案:

答案 0 :(得分:8)

您的布尔值while (lokke=true) 正在分配 lokke,而不是检查它。它应该是==。如果您正在检查布尔值,则无需明确地将其与truefalse进行比较。您可以使用while (lokke)

答案 1 :(得分:4)

本声明

while (lokke=true) {

始终评估为true,因为作业总是评估其右侧值。而是使用

while(lokke == true) {

或只是

while (lokke) {

答案 2 :(得分:1)

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

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