João Oliveira
João Oliveira

Reputation: 33

Make a switch case execute previous cases

My code looks like:

    switch(read.nextInt()){
        case 1:
            //do "a" and print the result
            break;
        case 2:
            //do "b" and print the result
            break;
        case 3:
            //do "a" and print the result
            //do "b" and print the result
    }

Is there another way to do it without simply copying what's inside case 1 and 2? I just started my graduation, so I can only use String and Scanner for this, thanks :)

Upvotes: 3

Views: 1016

Answers (4)

user3248346
user3248346

Reputation:

Define two methods called doA() and doB() and call them. This way you won't duplicate your code. Also are you sure you don't need break statements after each case statement?

    switch(read.nextInt()){
        case 1:
            doA();
            break;
        case 2:
            doB();
            break;
        case 3:
            doA();
            doB();
            break;
        default:
            // do something
            break;
    }

Upvotes: 2

Deepscorn
Deepscorn

Reputation: 832

Looks like you've forgot about 'break'. It makes code "break" from switch statement. If you want in case of '1' & '2' do the same thing and in case of '3' the other thing, you can write:

switch(read.nextInt()){
        case 1:
        case 2:
            //do "a" or "b" and print the result
            break; //break from switch statement, otherwise, the code below (yes, I mean "case 3") will be executed too
        case 3:
            //do "a" and print the result
            //do "b" and print the result
    }

It is a usual thing to add "break" in the end of "case" block if you don't want the same code block to be executed for several values:

switch(n){
        case 1:
            //do something
            break;
        case 2:
            //do other things
            break;
        case 3:
            //more things!
            //you may not write "break" in the last "case" if you want
    }

Upvotes: 0

fracz
fracz

Reputation: 21249

A tricky one, IMO more readable:

int nextInt = read.nextInt();
if (nextInt % 2 == 1) { // or if (nextInt == 1 || nextInt == 3) {
  // do "a" and print the result
}
if (nextInt > 1) {
  // do "b" and print the result
}

Upvotes: 0

sbochins
sbochins

Reputation: 198

In cases like this it probably makes sense to create methods for

//do "a" and print the result

and

//do "b" and print the result

In case 3 you would just call these methods one after the other.

Upvotes: 0

Related Questions