Erro - InputMessageDialog com Switch

5 respostas
fernando_vip

boas pessoal,

estou querendo ver onde esta o erro nesta classe que to tentando aprender rs

import javax.swing.*;

public class qual_mes_java {

    public static void main(String args[]) 
    	{
    		String Mes, nome;
    		int mes = 0;
    		//String nome = "";
    		
    		Mes = JOptionPane.showInputDialog("Digite um número de 1 a 12:");
    		mes = Integer.parseInt(Mes);
    		
    		switch(mes)
    		{
    			case 1: nome = "Janeiro";
    			break;
    			case 2: nome = "Fevereiro";
    			break;
    			case 3: nome = "Março";
    			break;
    			case 4: nome = "Abril";
    			break;
    			case 5: nome = "Maio";
    			break;
    			case 6: nome = "Junho";
    			break;
    			case 7: nome = "Julho";
    			break;
    			case 8: nome = "Agosto";
    			break;
    			case 9: nome = "Setembro";
    			break;
    			case 10: nome = "Outubro";
    			break;
    			case 11: nome = "Novembro";
    			break;
    			case 12: nome = "Dezembro";
    			break;
    			
    			default: nome = "Número de Mes Digitado Icorretamente!!";
    			break;
    			
    			JOptionPane.showMessageDialog(null, nome);
    			
    		}
    }
    
    
}

lembrando que acabei de iniciar em Java

5 Respostas

drsmachado

Dentro do switch você pode ter apenas case X: … break; e default: … break;
O JOptionPane.showMessageDialog(null, nome); não tem função alguma ali…

fernando_vip

drsmachado:
Dentro do switch você pode ter apenas case X: … break; e default: … break;
O JOptionPane.showMessageDialog(null, nome); não tem função alguma ali…

mas tipo, no switch num ta aparecendo qu tem erro, no dialog ta fazendo ou deveria fazer, exibir o que o case colocou dentro da string nome que é o mes em questão passado como referencia pelo input

nel

fernando_vip:
drsmachado:
Dentro do switch você pode ter apenas case X: … break; e default: … break;
O JOptionPane.showMessageDialog(null, nome); não tem função alguma ali…

mas tipo, no switch num ta aparecendo qu tem erro, no dialog ta fazendo ou deveria fazer, exibir o que o case colocou dentro da string nome que é o mes em questão passado como referencia pelo input

Tira essa mensagem de dentro do bloco do switch :slight_smile:

drsmachado

fernando_vip:
drsmachado:
Dentro do switch você pode ter apenas case X: … break; e default: … break;
O JOptionPane.showMessageDialog(null, nome); não tem função alguma ali…

mas tipo, no switch num ta aparecendo qu tem erro, no dialog ta fazendo ou deveria fazer, exibir o que o case colocou dentro da string nome que é o mes em questão passado como referencia pelo input

Certo…
A questão é que o switch será executado até que a condição referenciada pelo mes seja satisfeita (números de 1 a 12 ou vai entrar no default).
Como você mesmo programou, para cada vez que o mês for válido (valor de 1 a 12), ele vai dar à variável nome o valor referente ao mês e, então, chegar ao break;
Caso o valor informado seja menor que 1 ou maior que 12, o switch irá entrar no default, atribuindo outro valor à variável nome e então, invocando o break novamente.

Quando a palavra reservada break é interpretada pela JVM o processamento do código para, indo para a próxima linha fora do escopo atual (no caso, para fora do switch).

Se quer que o nome do mês seja apresentado, coloque em cada case o JOptionPane.showInputDialog e dentro do default também.

Se colocar fora, como o camarada disse, o programa rodará uma única vez e terminará, a não ser que você utilize uma estrutura de repetição.

fernando_vip

drsmachado:
fernando_vip:
drsmachado:
Dentro do switch você pode ter apenas case X: … break; e default: … break;
O JOptionPane.showMessageDialog(null, nome); não tem função alguma ali…

mas tipo, no switch num ta aparecendo qu tem erro, no dialog ta fazendo ou deveria fazer, exibir o que o case colocou dentro da string nome que é o mes em questão passado como referencia pelo input

Certo…
A questão é que o switch será executado até que a condição referenciada pelo mes seja satisfeita (números de 1 a 12 ou vai entrar no default).
Como você mesmo programou, para cada vez que o mês for válido (valor de 1 a 12), ele vai dar à variável nome o valor referente ao mês e, então, chegar ao break;
Caso o valor informado seja menor que 1 ou maior que 12, o switch irá entrar no default, atribuindo outro valor à variável nome e então, invocando o break novamente.

Quando a palavra reservada break é interpretada pela JVM o processamento do código para, indo para a próxima linha fora do escopo atual (no caso, para fora do switch).

Se quer que o nome do mês seja apresentado, coloque em cada case o JOptionPane.showInputDialog e dentro do default também.

Se colocar fora, como o camarada disse, o programa rodará uma única vez e terminará, a não ser que você utilize uma estrutura de repetição.

kkkk nem tinha visto isso, muito obrigado mesmo manow, a ajuda foi muito boa, nem tinha percebido o erro grosseiro la, que qualquer forma, muitooo obrigado msm

Criado 20 de setembro de 2011
Ultima resposta 20 de set. de 2011
Respostas 5
Participantes 3