一个程序,请大家看一下:
class switchText
{
final static int a=3;
public static void main(String args[])
{
for(int x=0;x<4;x++)
{
switch(x)
{
case a-3:System.out.println("0");
case a-2:System.out.println("1");
case a-1:System.out.println("2");
case a:System.out.println("3");
}
}
}
}
我觉得输出结果应该是:0123
可计算机结果是:0123123233
恳请达人解释一下!

解决方案 »

  1.   

    没有加break;
    class SwitchText {
    final static int a = 3; public static void main(String args[]) {
    for (int x = 0; x < 4; x++) {
    switch (x) {
    case a - 3:
    System.out.println("0");
    break;
    case a - 2:
    System.out.println("1");
    break;
    case a - 1:
    System.out.println("2");
    break;
    case a:
    System.out.println("3");
    break;
    }
    }
    }
    }
      

  2.   

    case后面你都没有加break;
    所以是计算机的输出结果,比如x=0时,a-3等于=0,所以打印0,不过没有break所以还继续执行下面的case所以有打印了123
      

  3.   

    楼上正解。  switch中如果没有用  break; 会断续往下执行的。
      

  4.   

    进入switch程序会扫描是否有匹配项,如果没有,则进入到default,如果有,则执行匹配的case
    因为你没有加break;语句在执行完匹配的case后,它会继续向下执行,直到执行完匹配项后面的所有case
      

  5.   

    因为每个case语句后面没有break
      

  6.   

    缺少了break,没有break的话,程序会从符合条件的case那里执行到完成。
      

  7.   

    class SwitchText {
        final static int a = 3;    public static void main(String args[]) {
            for (int x = 0; x < 4; x++) {
                switch (x) {                    // x= 2时
                case 0:                         // 不执行
                    System.out.println("0");
                case 1:                         // 不执行
                    System.out.println("1");
                case 2:                         // 执行,且其后的语句都会执行 ,case 不会做判断,除非碰到break
                    System.out.println("2");
                case 3:
                    System.out.println("3");
                }
            }
        }
    }
      

  8.   

    这个不难,好好理解下swith的执行流程就ok了。
    我帮你分析一下:
    第一次x=0;
       开始swith循环:a-3=0;打印出0;
        因为没有break;所以继续执行,此时a-2=1;输出1
       同理第一次循环输出23;
    第二次x=1;因a-2=1;匹配就输出1,同理接着输出23
    第三次x=2;同理输出23
    第四次x=3;就输出一个3四次连在一起就是0123123233了,呵呵
      

  9.   

    case 后要根据情况加break跳出条件,否则会继续执行下面的代码
      

  10.   

    switch....case....break
    我就曾经被break害死过
    顶一下吧,呵呵
      

  11.   

    没有break,如果不跳出,他会继续执行下面的语句!
      

  12.   

    x = 0:0123
    x = 1:123
    x = 2:23
    x = 3:2
      

  13.   

    你想要的答案不应该用for循环,直接switch就可以了
      

  14.   

    没有BREAK,回继续执行下面的语句吧
    总感觉在我同学的C++习题上见过
      

  15.   


    class switchText
    {
    final static int a=3;
    public static void main(String args[])
    {
    for(int x=0;x <4;x++)
    {
    switch(x)
    {
    case a-3:System.out.println("0");//当x=0时,case a-3符合,所以执行System.out.println("0");然后,后面的每一个case都会执行。所以,当x=0时,应该输出0123。以此类推。
    case a-2:System.out.println("1");
    case a-1:System.out.println("2");
    case a:System.out.println("3");
    }
    }
    }

      

  16.   

    class switchText { 
    final static int a=3; 
    public static void main(String args[]) { 
    for(int x=0;x <4;x++) { 
    switch(x) { 
    case a-3:
         System.out.println("0"); 
         break;
    case a-2:
         System.out.println("1");
         break; 
    case a-1:
         System.out.println("2");
         break; 
    case a:
         System.out.println("3"); 
         break;




    如果不用break就会一直执行下去,直到执行到break或者程序结束
    break关键字是跳出循环
      

  17.   

    首先来说一下,这个问题其实十分简单,不是楼主看了这里的解答就能够发现什么,
    提点建议,
    好好的看看java基础书籍,因为语句类型就那几种,到现在,每一本基础书都是写的那些东西,选择,循环,顺序,只是从里面可以表达的东西就很多,希望好好的看看书,谢谢,