Voglio usare un'istruzione switch e le mie condizioni per if sono:
if (userInput%2 == 0 || userInput != 0)
Posso ottenere due casi da questo codice per eseguire diverse azioni per userInput == 0
e diverso per userInput == 0
case ?:
case ?:
risposte:
3 per risposta № 1Non è possibile, poiché il valore impostato soddisfa le due condizioni sovrapposizione. In particolare, tutti i numeri pari soddisfano entrambe le parti delle condizioni. Ecco perché non è possibile eseguire azioni diverse senza decidere prima quale parte della condizione ha la precedenza.
Puoi giocare un piccolo trucco con fall-through all'interno di switch
affermazione, come questa:
switch(userInput%2) {
case 0:
// Do things for the case when userInput%2 == 0
...
// Note: missing "break" here is intentional
default:
if (userInput == 0) break;
// Do things for the case when user input is non-zero
// This code will execute when userInput is even, too,
// because of the missing break.
...
}
2 per risposta № 2
Perché non dividere il if
dichiarazione
if (userInput%2 == 0) {
// something
}
else if (userInput != 0) {
// something else
}
Si noti che l'ordine dei test sarà importante poiché tutti i numeri pari diversi da zero soddisfano entrambi i test.