我在Java中使用switch语句,一旦程序到达break语句,它不会退出开关,而是移动到switch体的最后一行并执行它。
我已经在调试模式下在控制台“Sofia”和250中编写了它。它进入第一个开关,找到“Sofia”情况,为佣金变量赋值,执行中断然后转到最后一行开关体的一部分也执行返回。如果我完全删除默认情况,在执行中断后它再次进入正文的最后一行并从第三种情况执行中断。无论我尝试什么,执行中断似乎都不会退出开关体的主体并始终转到它的最后一行。
你知道为什么会这样吗?这是代码:
package SlojniLogicheskiProverki;
import java.util.Scanner;
public class Zadacha {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String city = scan.nextLine();
double sales = Double.parseDouble(scan.nextLine());
double commission = 0;
if (sales >= 0 && sales <= 500) {
switch (city) {
case "Sofia":
commission = 5;
break;
case "Plovdiv":
commission = 5.5;
break;
case "Varna":
commission = 4.5;
break;
default:
System.out.println("error");
return;
}
} else if (sales > 500 && sales <= 1000) {
switch (city) {
case "Sofia":
commission = 7;
break;
case "Plovdiv":
commission = 8;
break;
case "Varna":
commission = 7.5;
break;
default:
System.out.println("error");
return;
}
} else if (sales > 1000 && sales <= 10000) {
switch (city) {
case "Sofia":
commission = 8;
break;
case "Plovdiv":
commission = 12;
break;
case "Varna":
commission = 10;
break;
default:
System.out.println("error");
return;
}
}
else if (sales > 10000) {
switch (city) {
case "Sofia":
commission = 12;
break;
case "Plovdiv":
commission = 14.5;
break;
case "Varna":
commission = 13;
break;
default:
System.out.println("error");
return;
}
} else {
System.out.println("error");
return;
}
System.out.printf("d%",commission);
}
}