Test de Certificação!

Galera fiquei com uma dúvida nesse pequeno programa, no teste esta dizendo que o resultado que vai aparecer é 21, mas como?alguém poderia me explicar por favor?


public class Stepper {
enum Roman{I,V,X,L,C,M}
    public static void main(String... bang) {
        int x= 7;
        int z= 2;
        Roman r = Roman.X;
        do{
            switch(r){
                case C: 
                    r=Roman.L;
                break;
                case X:
                    r=Roman.C;
                case L:
                    if(r.ordinal()>2)z+=5;
                case M:
                   x++; 
            }
            z++;
        }while(x<10);
        System.out.println(z);
    }
}

Cara roda esse código debugando. Ai vc vê passo a passo como ele chega nesse resultado.

Veja se a explicação abaixo é util.

Volta…: 0 valor de X…: 7 valor de Z…: 2
Volta…: 1 valor de X…: 8 valor de Z…: 8
Volta…: 2 valor de X…: 8 valor de Z…: 9
Volta…: 3 valor de X…: 9 valor de Z…: 15

[quote=beterincosto]Veja se a explicação abaixo é util.

Volta…: 0 valor de X…: 7 valor de Z…: 2
Volta…: 1 valor de X…: 8 valor de Z…: 8
Volta…: 2 valor de X…: 8 valor de Z…: 9
Volta…: 3 valor de X…: 9 valor de Z…: 15

[/quote]

É isso mesmo, não tem muita complicação, creio que o único “peguinha” seria o case sem ‘break’, isso faz com que faça os outros cases.

[quote=lucasportela][quote=beterincosto]Veja se a explicação abaixo é util.

Volta…: 0 valor de X…: 7 valor de Z…: 2
Volta…: 1 valor de X…: 8 valor de Z…: 8
Volta…: 2 valor de X…: 8 valor de Z…: 9
Volta…: 3 valor de X…: 9 valor de Z…: 15

[/quote]

É isso mesmo, não tem muita complicação, creio que o único “peguinha” seria o case sem ‘break’, isso faz com que faça os outros cases.[/quote]
E, justamente pelos cases sem breaks é que o valor de z chega a isso.