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 {
publicstaticvoidmain(String[]args){Stringn;intc;n=JOptionPane.showInputDialog("Informe o numero");c=n.charAt(0);switch(c){case1:System.out.println("Janeiro");break;case2:System.out.println("Fevereiro");break;case3:System.out.println("Marco");break;case4:System.out.println("Abril");break;case5:System.out.println("Maio");break;case6:System.out.println("Junho");break;case7:System.out.println("Julho");break;case8:System.out.println("Agosto");break;case9:System.out.println("Setembro");break;case10:System.out.println("Outubro");break;case11:System.out.println("Novembro");break;case12:System.out.println("Dezembro");break;case13:System.out.println("Nao equivale a nenhum mes");break;}}
if((c<1)||(c>12)){
System.out.println(" Não tem Mês ...");
}else.....
N
nanydesp
o problema está na hora de ler o q o usuário digitou…
P
paulohrl
cara, tenta editar seu post usando a tag [code] que facilita a gente entender e te ajudar.
A
Alexdino
Eu coloquei 1,ai dava a mensagem de mes não correspondente.
A
Alexdino
importjavax.swing.*;publicclassMeses{publicstaticvoidmain(String[]args){Stringn;intc;n=JOptionPane.showInputDialog("Informe o numero");c=n.charAt(0);switch(c){case1:System.out.println("Janeiro");break;case2:System.out.println("Fevereiro");break;case3:System.out.println("Marco");break;case4:System.out.println("Abril");break;case5:System.out.println("Maio");break;case6:System.out.println("Junho");break;case7:System.out.println("Julho");break;case8:System.out.println("Agosto");break;case9:System.out.println("Setembro");break;case10:System.out.println("Outubro");break;case11:System.out.println("Novembro");break;case12: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
Alexdino
Consegui fazer o programa,após um raciocinio lógico…
importjavax.swing.*;publicclassMeses{publicstaticvoidmain(String[]args){intc;c=Integer.parseInt(JOptionPane.showInputDialog("Informe o numero"));switch(c){case1:System.out.println("Janeiro");break;case2:System.out.println("Fevereiro");break;case3:System.out.println("Marco");break;case4:System.out.println("Abril");break;case5:System.out.println("Maio");break;case6:System.out.println("Junho");break;case7:System.out.println("Julho");break;case8:System.out.println("Agosto");break;case9:System.out.println("Setembro");break;case10:System.out.println("Outubro");break;case11:System.out.println("Novembro");break;case12: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
packageteste;importjavax.swing.*;publicclassguj{/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubStringmesDigitado="";intmesConvertido=0;booleanchamadaValida=true;while(chamadaValida){mesDigitado=JOptionPane.showInputDialog("Informe o numero do mês (de 1 à 12)");try{mesConvertido=Integer.valueOf(mesDigitado);chamadaValida=false;}catch(NumberFormatExceptione){chamadaValida=true;System.out.println("Aewww o , digita um número!!");}}switch(mesConvertido){case1:System.out.println("Janeiro");break;case2:System.out.println("Fevereiro");break;case3:System.out.println("Marco");break;case4:System.out.println("Abril");break;case5:System.out.println("Maio");break;case6:System.out.println("Junho");break;case7:System.out.println("Julho");break;case8:System.out.println("Agosto");break;case9:System.out.println("Setembro");break;case10:System.out.println("Outubro");break;case11:System.out.println("Novembro");break;case12: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
lcegatti
Um jeito mais enxuto:
Calendarc=newGregorianCalendar(newLocale("pt","BR"));Integernum=Integer.valueOf(JOptionPane.showInputDialog("Informe o mes"));c.set(Calendar.MONTH,num-1);System.out.println(c.getDisplayName(Calendar.MONTH,Calendar.MONTH,newLocale("pt","BR")));