Duvina num programa

12 respostas
A

Tenho que fazer um programa que tem que informar um numero de 1 a 12,e escrever o mês correspondente…e se o usuário der um numero fora de 1 a 12,escrever uma mensagem dizendo que o mês não existe.

Fiz o programa,mais quando eu digito o numero,a mensagem que aparece é sempre “Não equivale a nenhum mês”

Não sei aonde estou errando.

import javax.swing.*;
public class Meses {

public static void main(String[] args) {
  String n;
  int c;
  
   n=JOptionPane.showInputDialog("Informe o numero");
  c=n.charAt(0);
  
   switch (c){
   	         case 1:System.out.println ("Janeiro");
   	         break;
   	         
   	         case 2:System.out.println ("Fevereiro");
   	         break;
   	         
   	         case 3:System.out.println ("Marco");
   	         break;
   	         
   	         case 4:System.out.println ("Abril");
   	         break;
   	         
   	         case 5:System.out.println ("Maio");
   	         break;
   	         
   	         case 6:System.out.println ("Junho");
   	         break;
   	         
   	         case 7:System.out.println ("Julho");
   	         break;
   	         
   	         case 8:System.out.println ("Agosto");
   	         break;
   	         
   	         case 9:System.out.println ("Setembro");
   	         break;
   	         
   	         case 10:System.out.println ("Outubro");
   	         break;
   	         
   	         case 11:System.out.println ("Novembro");
   	         break;
   	         
   	         case 12:System.out.println ("Dezembro");
   	         break;
   
   	         case 13:System.out.println ("Nao equivale a nenhum mes");
   	         break;
   	         
   	         
   }	         
   
}

}

12 Respostas

sowyer

coloque um if antes fio ....

if ( ( c < 1 ) || ( c > 12 ) ) {

System.out.println ( " Não tem Mês ...");

} else .....
N

o problema está na hora de ler o q o usuário digitou…

P

cara, tenta editar seu post usando a tag [code] que facilita a gente entender e te ajudar.

A

Eu coloquei 1,ai dava a mensagem de mes não correspondente.

A
import javax.swing.*; 
public class Meses { 


public static void main(String[] args) { 
String n; 
int c; 

n=JOptionPane.showInputDialog("Informe o numero"); 
c=n.charAt(0); 

switch (c){ 
case 1:System.out.println ("Janeiro"); 
break; 

case 2:System.out.println ("Fevereiro"); 
break; 

case 3:System.out.println ("Marco"); 
break; 

case 4:System.out.println ("Abril"); 
break; 

case 5:System.out.println ("Maio"); 
break; 

case 6:System.out.println ("Junho"); 
break; 

case 7:System.out.println ("Julho"); 
break; 

case 8:System.out.println ("Agosto"); 
break; 

case 9:System.out.println ("Setembro"); 
break; 

case 10:System.out.println ("Outubro"); 
break; 

case 11:System.out.println ("Novembro"); 
break; 

case 12:System.out.println ("Dezembro"); 
break; 

default:System.out.println ("Nao equivale a nenhum mes"); 
break; 


} 

} 
}
xjcd

Amigo seu problema está aqui:

c=n.charAt(0);

Quando você faz isso, converte a String para o tipo char, e no case você está usando valores literais que são, por padrão, inteiros, então não vai funcionar. Sugiro que você trabalhe com int assim:

c = Integer.valueOf(n);

Troque o “case 13” por “default”.

A

Consegui fazer o programa,após um raciocinio lógico…

import javax.swing.*;
public class Meses {
        
   
    public static void main(String[] args) {
     
      int c;
      
       c=Integer.parseInt(JOptionPane.showInputDialog("Informe o numero"));
       
      
       switch (c){
       	         case 1:System.out.println ("Janeiro");
       	         break;
       	         
       	         case 2:System.out.println ("Fevereiro");
       	         break;
       	         
       	         case 3:System.out.println ("Marco");
       	         break;
       	         
       	         case 4:System.out.println ("Abril");
       	         break;
       	         
       	         case 5:System.out.println ("Maio");
       	         break;
       	         
       	         case 6:System.out.println ("Junho");
       	         break;
       	         
       	         case 7:System.out.println ("Julho");
       	         break;
       	         
       	         case 8:System.out.println ("Agosto");
       	         break;
       	         
       	         case 9:System.out.println ("Setembro");
       	         break;
       	         
       	         case 10:System.out.println ("Outubro");
       	         break;
       	         
       	         case 11:System.out.println ("Novembro");
       	         break;
       	         
       	         case 12:System.out.println ("Dezembro");
       	         break;
       
       	        default:System.out.println ("Nao equivale a nenhum mes");
       	         break;
       	         
       	         
       }	         
       
    }
}
luistiagos

uma dica em vez de switch use vetores… declare um array de Strings de 12 posições então a cada posição vc coloca o nome de um mes…

JJVARGAS
package teste;

import javax.swing.*;

public class guj {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String mesDigitado = "";
		int mesConvertido = 0;
		boolean chamadaValida = true;
		
		while (chamadaValida) {
			mesDigitado = JOptionPane.showInputDialog("Informe o numero do mês (de 1 à 12)");
			try {
				mesConvertido = Integer.valueOf(mesDigitado);
				chamadaValida = false;
			} catch (NumberFormatException e) {
				chamadaValida = true;
				System.out.println("Aewww o , digita um número!!");
			}
		}

		switch (mesConvertido) {
		case 1:
			System.out.println("Janeiro");
			break;

		case 2:
			System.out.println("Fevereiro");
			break;

		case 3:
			System.out.println("Marco");
			break;

		case 4:
			System.out.println("Abril");
			break;

		case 5:
			System.out.println("Maio");
			break;

		case 6:
			System.out.println("Junho");
			break;

		case 7:
			System.out.println("Julho");
			break;

		case 8:
			System.out.println("Agosto");
			break;

		case 9:
			System.out.println("Setembro");
			break;

		case 10:
			System.out.println("Outubro");
			break;

		case 11:
			System.out.println("Novembro");
			break;

		case 12:
			System.out.println("Dezembro");
			break;

		default:
			System.out.println("Nao equivale a nenhum mes");

		}

	}
}
JJVARGAS

Esqueci de comentar… fiz um tratamento caso o usuario digite algo que não seja numero.

abraços…

se não entendeu algo pergunta ai …

dmandrak

Na verdade acho que vc está recebendo uma string - ou um char, visto que é um só - e testando se é inteiro.

Ou vc “casta” o c que recebeu para integer ou passa o 1 2 3 4 5 6 para “1” “2” “3”.

Entedeu?

edit: enquanto eu respondia outras 7 pessoas responderam :smiley:

lcegatti

Um jeito mais enxuto:

Calendar c = new GregorianCalendar(new Locale("pt","BR"));
Integer num = Integer.valueOf(JOptionPane.showInputDialog("Informe o mes"));
c.set(Calendar.MONTH, num-1);
System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.MONTH, new Locale("pt","BR")));

[]'s

Criado 8 de outubro de 2008
Ultima resposta 8 de out. de 2008
Respostas 12
Participantes 9