Andrew
Andrew

Reputation: 85

Can I jump from one case to another in a switch statements?

For switch statements, is it possible to change the value of the switch inside the switch statement so that it can jump around to different cases? Ex:

int w = 0;
switch(w)
{
   case 1:
     doSomething();
     w = 3;
   case 2:
     doSomething();
     break;
   case 3:
     doSomething();
     break;
}

Basically what I'm asking is, if I do not place a break statement for a case and I change the value of the switch in the same case, will the code execute both cases?

Upvotes: 4

Views: 4622

Answers (5)

Ayush Singh
Ayush Singh

Reputation: 1

No the switch's case will not change when changing the value in a particular case it checks only once

let a = 1
    switch (a) {
      case 1:
        console.log("Hello from 1")//only this will be printed 
        a = 2//value of a is changed
        break
      case 2:
        console.log("hello from 2")//this will not execute
        a = 3
        break
      case 3:
        console.log("hello from 3")//this will not execute
        a = 4
        break
      case 4:
        console.log("hello from 4")//this will not execute
        break
      default:
        console.log("default")
    }
    console.log(a)//value will be 2

Upvotes: 0

Khyati
Khyati

Reputation: 11

If we do not give break after each case then Java will start executing the statement from matching case and keep on executing statements for following cases as well, until either a break statement is found or switch statements end is encountered.

Upvotes: 1

Saurabh Gokhale
Saurabh Gokhale

Reputation: 46405

No, it will not change and will not execute new case statement.

Remember that, once appropriate match is found with the case statement corresponding to a value inside the switch statement, that particular case is executed and once that is executed ( if break is provided after each case to prevent falling through all cases) , then the control returns to the end of switch statement.

Sample Code :

public  class A {
            public static void main(String [] args) {
                    int i=1;
                    switch(i) {
                            case 1 : 
                                    System.out.println("Case 1");
                                    i = 2;
                                    break;
                            case 2 : 
                                    System.out.println("Changed to Case 2");
                                    break;

                             default:
                                    System.out.println("Default");
                                    break;
                            }

                    System.out.println("Final value of i " + i);
            }
    }

Output :

Case 1
Final value of i 2  

Note : Inserting proper breakpoints, try to debug. You will come to know yourself, what exactly is happening.

Upvotes: 3

Mahesh
Mahesh

Reputation: 34625

If case 1 happens to execute, it's just a fall through to the case 2. And since there is a break in case 2, further fall through doesn't happen. It doesn't jump to case 3 because of the statement w = 3 ; in case 1.

Upvotes: 0

Harry Joy
Harry Joy

Reputation: 59660

Yes you can change the value inside switch but it will not execute case for new value until you break in the case where you changed the value.

In your case it will not go in any case as there is no case for 0. But if you change to w = 1 then it will go for case 1 and then for case 2 as you do not have break; but it will not go for case 3.

Upvotes: 3

Related Questions