Eu quero usar uma declaração switch, e minha condição para o if é:
if (userInput%2 == 0 || userInput != 0)
Posso obter dois casos deste código para executar ações diferentes para userInput == 0
e diferente para userInput == 0
case ?:
case ?:
Respostas:
3 para resposta № 1Você não pode, porque o valor define satisfazendo as duas condições sobreposição. Especificamente, todos os números pares satisfazem ambas as partes de suas condições. É por isso que você não pode executar ações diferentes sem decidir primeiro qual parte da condição tem precedência.
Você pode jogar um pequeno truque com queda dentro do switch
declaração, assim:
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 para resposta № 2
Por que não apenas dividir o if
declaração
if (userInput%2 == 0) {
// something
}
else if (userInput != 0) {
// something else
}
Observe que a ordem dos testes será importante, pois todos os números pares não-zero satisfazem os dois testes.