Swicth, case com varios valores

8 respostas
D
public static void main(String[] args) {

// TODO Auto-generated method stub

String estado;
estado = JOptionPane.showInputDialog(null, "Digite o estado: ");
	
	switch (estado) {
	case "Pernambuco":
		JOptionPane.showMessageDialog(null, "Região Nordeste");
		break;

como eu faço esse comando case com todos os estados do nordeste?
Obs: quero só um comandos case com todos os estados.

8 Respostas

nel

O case avalia um único valor, a partir do Java 7 o mesmo aceita Strings.
Ou tu faz uma “Stringona”, com todos os estados, o que seria horrível ou faz caso a caso.

Não é bem mais fácil e simples tu usar uma lista com os valores e usar o método contains ?
Criar uma lista com todos os estados do nordeste e verificar se o estado digitado consta nela, compreende ?

Dá para usar outras técnicas, mas acho que essa ainda é a mais simples.
Abraços.

K

String estado = "Ceara"; switch(estado){ case "Bahia": case "Maranhao": case "Rio Grande":

D

É acho que vou ter que fazer caso a caso, eu não sei quase nada, comecei java tem menos de uma semana, ainda to pegando o ritmo, vlw nel :slight_smile:

S

É só dar "break" após o último estado de cada região. Exemplo:

switch(estado){
    case "AL":
    case "BA":
    case "CE":
    case "MA":
    case "PB":
    case "PE":
    case "PI":
    case "RN":
    case "SE":
    //FAZ ALGO AQUI PARA TODOS OS CASES DO NORDESTE
    break;

    case "ES":
    case "MG":
    case "RJ":
    case "SP":
    //FAZ ALGO AQUI PARA TODOS OS CASES DO SUDESTE
    break;

    etc...
}

Como o switch-case precisa de break para parar o efeito cascata, você pode usar isso ao seu favor e pará-lo a cada região.

NewScript

Procure aplicar o que o nel recomendou, eu também sou iniciante mas, se entendi direito, uma lista é mais adequada. Exemplo:

ArrayList<String> estadosDoNordeste = new ArrayList<>();
estadosDoNordeste.add("Bahia");
estadosDoNordeste.add("Maranhão");
...

depois:

if(estadosDoNordeste.contains("Bahia"){
     ...
}
S

Só lembrando que, como você vai pedir para o usuário digitar o nome do estado, o método contains() faz distinção de maiúsculas e minúsculas e retornará falso se o usuário digitar o nome errado ou com maiúsculas e minúsculas diferente do que vc setou por padrão.

Como o número de estados do Brasil + DF são 27 (ou seja, um número limitado), seria legal (dependendo do que vc fará) colocar tudo numa ComboBox, e pedir pro usuário selecionar o estado desejado. Isso implicaria em contornar erros de digitação do mesmo. Mas é só uma dica, depende do que será feito.

NewScript

Verdade… porém ainda existe o fato de que vc deverá digitar a lista, e na minha opinião o código ficaria mais legível se vc criasse a lista e depois a incluísse no ComboBox. Sou iniciante, não trabalhei ainda com o combox, mas deve existir uma maneira simples de fazer isso…

nel

É exatamente isso.


Só lembrando que, como você vai pedir para o usuário digitar o nome do estado, o método contains() faz distinção de maiúsculas e minúsculas e retornará falso se o usuário digitar o nome errado ou com maiúsculas e minúsculas diferente do que vc setou por padrão.

Como o número de estados do Brasil + DF são 27 (ou seja, um número limitado), seria legal (dependendo do que vc fará) colocar tudo numa ComboBox, e pedir pro usuário selecionar o estado desejado. Isso implicaria em contornar erros de digitação do mesmo. Mas é só uma dica, depende do que será feito.

Se ele quiser usar assim, é bacana e elimina possibilidade de erros de digitação e etc. Todavia, pensando só em código, é bem simples de contornar.
Cria a lista com só letras minúsculas e depois use o método toLowerCase() para colocar o que o usuário digitou em minúsculo também, evitando problemas.

Pode usar para maiúsculas também, basta usar o método toUpperCase().
Nesses casos, ele só não vai encontrar o estado se realmente o mesmo não pertencer a lista em questão, seja por erro de digitação e/ou estado que não pertença a uma região ou coisa parecida.

Criado 16 de abril de 2013
Ultima resposta 17 de abr. de 2013
Respostas 8
Participantes 5