No meu código, o programa faz algo dependendo do texto digitado pelo usuário. Meu código se parece com:
switch (name) {
case text1: {
//blah
break;
}
case text2: {
//blah
break;
}
case text3: {
//blah
break;
}
case text4: {
//blah
break;
}
No entanto, o código dentro de casos text1
e text4
é o mesmo. Fiquei, portanto, imaginando se seria possível implementar algo como
case text1||text4: {
//blah
break;
}
Sei que o ||
operador não funcionará na declaração de caso, mas há algo semelhante que posso usar.
java
switch-statement
Ankush
fonte
fonte
Respostas:
Você pode usar as duas
CASE
instruções da seguinte maneira.VEJA ESTE EXEMPLO: O exemplo de código calcula o número de dias em um mês específico:
Esta é a saída do código:
CAIR EM:
CÓDIGO DO EXEMPLO:
Esta é a saída do código:
Usando seqüências de caracteres nas instruções do switch
A saída deste código é 8.
DO Java Docs
fonte
break
são basicamente anexados ao próximo bloco de caso, que é visualmente abaixo, e portanto cai .você pode fazer como:
fonte
Os
case
valores são apenas pontos "ir" sem código que podem compartilhar o mesmo ponto de entrada:Observe que os chavetas são redundantes.
fonte
Apenas faça
fonte
Com a integração do JEP 325: Expressões de switch (visualização) nas compilações de acesso antecipado do JDK-12, agora é possível fazer uso da nova forma do rótulo do switch como: -
ou reformular a demonstração de uma das respostas , algo como: -
Aqui está como você pode tentar - Compile um recurso de visualização do JDK12 com o Maven
fonte
Os suportes são desnecessários. Apenas faça
Se alguém estiver curioso, isso é chamado de explicação do caso. A capacidade de fazer isso é o motivo pelo qual
break;
é necessário encerrar as declarações de caso. Para mais informações, consulte o artigo da wikipedia http://en.wikipedia.org/wiki/Switch_statement .fonte
As
fallthrough
respostas dos outros são boas.No entanto, outra abordagem seria extrair métodos do conteúdo de suas instruções de caso e chamar o método apropriado de cada caso.
No exemplo abaixo, o caso 'texto1' e o caso 'texto4' se comportam da mesma maneira:
Pessoalmente, acho esse estilo de escrever declarações de caso mais sustentável e um pouco mais legível, especialmente quando os métodos que você chama possuem bons nomes descritivos.
fonte
text1
etext4
QUASE CERTAMENTE fará a mesma coisa, independentemente de uma mudança futura. Se eles sempre deveriam estar vinculados, fazer uma alteração no caso detext1
(significando alterar qual método ele chama) exigiria uma alteraçãotext4
. Nesse caso, obviamente não é mais sustentável. Depende da situação.Abordar a abordagem é a melhor que eu sinto.
fonte
Você pode usar:
fonte
Os valores de caso são apenas pontos "ir" codificados que podem compartilhar o mesmo ponto de entrada:
Observe que os chavetas são redundantes.
fonte
O JEP 354: Expressões do switch (visualização) no JDK-13 e o JEP 361: Expressões do switch (padrão) no JDK-14 estenderão a instrução switch para que ele possa ser usado como expressão .
Agora você pode:
case L ->
):Portanto, a demonstração de uma das respostas pode ser assim:
fonte