Java Language Cambiar la declaración


Ejemplo

La instrucción switch es la declaración de rama de múltiples vías de Java. Se utiliza para reemplazar el largo de las cadenas if , else if , else , y hacerlas más legibles. Sin embargo, a diferencia de las afirmaciones if , uno no puede usar desigualdades; Cada valor debe ser definido concretamente.

Hay tres componentes críticos para la instrucción switch :

  • case : Este es el valor que se evalúa para determinar la equivalencia con el argumento de la instrucción switch .
  • default : esta es una expresión opcional, de alcance general, en caso de que ninguna de las declaraciones de case evalúe como true .
  • Finalización abrupta de la declaración del case ; generalmente se break : esto es necesario para evitar la evaluación no deseada de declaraciones de case adicionales.

Con la excepción de continue , es posible usar cualquier declaración que cause la finalización brusca de una declaración . Esto incluye:

  • break
  • return
  • throw

En el siguiente ejemplo, una declaración de switch típica se escribe con cuatro casos posibles, incluido el default .

Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
switch (i) {
    case 0:
        System.out.println("i is zero");
        break;
    case 1:
        System.out.println("i is one");
        break;
    case 2:
        System.out.println("i is two");
        break;
    default:
        System.out.println("i is less than zero or greater than two");
}

Al omitir una break o cualquier declaración que pudiera completarse de manera abrupta, podemos aprovechar lo que se conoce como casos "directos", que evalúan varios valores. Esto se puede usar para crear rangos para que un valor sea exitoso, pero aún no es tan flexible como las desigualdades.

Scanner scan = new Scanner(System.in);
int foo = scan.nextInt();
switch(foo) {
    case 1:
        System.out.println("I'm equal or greater than one");
    case 2:
    case 3:    
        System.out.println("I'm one, two, or three");
        break;
    default:
        System.out.println("I'm not either one, two, or three");
}

En caso de foo == 1 la salida será:

I'm equal or greater than one
I'm one, two, or three

En caso de foo == 3 la salida será:

I'm one, two, or three
Java SE 5

La instrucción de cambio también se puede utilizar con enum s.

enum Option {
    BLUE_PILL,
    RED_PILL
}

public void takeOne(Option option) {
    switch(option) {
        case BLUE_PILL:
            System.out.println("Story ends, wake up, believe whatever you want.");
            break;
        case RED_PILL:
            System.out.println("I show you how deep the rabbit hole goes.");
            break;
            
    }
}
Java SE 7

La instrucción switch también se puede usar con String s.

public void rhymingGame(String phrase) {
    switch (phrase) {
        case "apples and pears":
            System.out.println("Stairs");
            break;
        case "lorry":
            System.out.println("truck");
            break;
        default:
            System.out.println("Don't know any more");
    }
}