public class Cases {
public static void main(String[] args) {
float x = 9;
float y = 5;
int z = (int)(x / y);
switch (z) {
case 1:
x = x + 2;
case 2:
x = x + 3;
default:
x = x + 1;
}
System.out.println("Value of x: " + x);
}

}X被显示时其值是多少?谁能帮忙降解一下?

解决方案 »

  1.   

    15.0哟,switch case中有这样一条,当匹配了个case的时候,如果后面没有跟break;这样的话就会接着运行下面的语句直到有break或结束,所以这样题就会把三个表达式都运行一次,就是9+1+2+3=15.0可惜没分加-_-!!
      

  2.   

    int z = (int)(x / y); // x/y = 1.8,但是经过 int 强转,小数就扔掉了,变成了“1”。
    switch (z) {
    case 1:  // 因为 z == 1,那就从这里做起了。
    x = x + 2; // 做完后,x = 9 + 2 = 11 了,由于没有 break,所以并不会跳出 switch,继续
    case 2:
    x = x + 3; // 做完后,x = 11 + 3 = 14 了,继承下去
    default:
    x = x + 1; // 做完后,x = 14 + 1 = 15 了,所以最终结果 x = 15 了像 Switch 很容易会忘掉加 break; 的,一旦忘掉了,就可能导致不同的结束。
      

  3.   

    15.0没有break程序会把下面一条一条的执行掉
      

  4.   

    float 默认的输出格式是带一位小数的。