Sì. Gli interruttori interrompono il modello di istruzione del blocco di linguaggio, ma questo è principalmente a causa di C/C++ da cui si basa l'istruzione switch utilizzata da Java.
In tutte e tre le lingue, l'istruzione switch assume la seguente forma:
switch(variable) {
case n:
statement 1;
statement n;
(optional) break;
case n+1:
statement 1;
statement n;
(optional) break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
Perché un'istruzione switch rompe lo schema linguaggio tradizionale, molti programmatori avvolgono i loro più istruzioni in un caso utilizzando lo stile di blocco tradizionale: { }
Questo perché la maggior parte dei costrutti in tutte e tre le lingue consente di considerare istruzioni di stile di blocco come un'unica istruzione, ma l'istruzione switch non richiede lo stile di blocco per l'esecuzione di più istruzioni in un singolo caso.
Senza l'istruzione break che separa ogni caso, ci sarà "sfumare" - se caso n è stato abbinato e non ha avuto una pausa, il codice sotto di essa (caso n + 1) verrebbe eseguita - se caso n + 1 non ha avuto un'interruzione ed è stato abbinato, il codice predefinito sarebbe stato eseguito, se nessuno dei due avesse avuto un'interruzione, quando si è verificato il caso n, il codice per il caso n, il caso n + 1 e il default sarebbero stati eseguiti.
L'impostazione di default è opzionale, e specifica un'azione predefinita per un'istruzione switch per eseguire. In genere, la condizione predefinita è un gestore generico o una buona posizione per generare un'eccezione se il valore non può essere logicamente diverso dai valori nell'istruzione switch.
per illustrare un'istruzione switch esecuzione all'interno di un'istruzione switch, dare un'occhiata a questo esempio inventato:
String message = null;
int outerVariable = getOuterVariable();
switch(outerVariable) {
case n:
statement 1;
statement n;
break;
case n+1:
int innerVariable = getInnerVariable();
switch(innerVariable) {
case 1:
message = "IT WAS 1";
break;
default:
message = "WHY WOULD YOU DO THIS? OH THE HUMANITY!";
}
break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
nel tempo che ti ha portato a scrivere questa domanda si potrebbe avere provato da soli ... solo dicendo ... –
Penso che il punto di SO sia che le persone non hanno bisogno di scrivere codice per testare un'idea. –
@ande_turner: no. SO è qui per rispondere alle domande, non per fare cose invece di persone. –