Java Language Passare la dichiarazione

Esempio

L'istruzione switch è la dichiarazione di ramo a più vie di Java. E 'usato per prendere il posto di lunga if - else if - else catene, e renderli più leggibili. Tuttavia, a differenza delle dichiarazioni if , non si possono usare disuguaglianze; ogni valore deve essere definito concretamente.

Esistono tre componenti critici per l'istruzione switch :

  • case : questo è il valore che viene valutato per l'equivalenza con l'argomento dell'istruzione switch .
  • default : si tratta di un'espressione catch-all facoltativa, nel case cui nessuna delle espressioni case valuti come true .
  • Completamento brusco della dichiarazione del case ; di solito break : ciò è necessario per evitare la valutazione indesiderata di ulteriori dichiarazioni di un case .

Ad eccezione di continue , è possibile utilizzare qualsiasi istruzione che possa causare il completamento brusco di una dichiarazione . Ciò comprende:

  • break
  • return
  • throw

Nell'esempio seguente, una tipica istruzione switch viene scritta con quattro possibili casi, incluso quello 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");
}

Omettendo la break o qualsiasi affermazione che avrebbe un completamento brusco, possiamo sfruttare i casi noti come "fall-through", che valutano rispetto a diversi valori. Questo può essere usato per creare intervalli per cui un valore ha successo, ma non è ancora flessibile come le disuguaglianze.

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");
}

In caso di foo == 1 l'output sarà:

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

In caso di foo == 3 l'output sarà:

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

L'istruzione switch può anche essere utilizzata 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

L'istruzione switch può anche essere utilizzata 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");
    }
}