Oi pessoal, estou com uma duvida no switch case… o lance e o seguinte, tenho q digitar um numero q me retorne um mes (ex: se eu digitar “1” o programa vai retornar “Janeiro”), enfim, tudo vai bem ate chegar ao mes de outubro… qual sera o problema? sera q ele nao aceita dois caracteres? (no caso 10, 11 ou 12)??? Me ajudem!!!
Obrigada a todos,
Viviane Saraiva
Olá,
o switch aceita inteiros sim! Posta a parte do código que está com problema, assim podemos ver melhor o que está acontecendo…
Tiago
hi !!
Qual o tipo de variável que vc está usando ?
PS: talvez apenas para teste, tente usar uma estrutura condicional simples, o if/else.
Schmidt
Para uma lista fixa como meses não use switch nem if:
public class Mes {
private final String[] meses =
{"Janeiro", "Fevereiro", "Março", "Abril",
"Maio", "Junho", "Julho", "Agosto",
"Setembro", "Outubro", "Novembro", "Dezembro"
};
public String getMes(int numero){
return meses[numero-1];
// 1 = Jajeiro, 2 = Fevereiro etc
}
public static void main(String[] args){
Mes mes = new Mes();
System.out.println(mes.getMes(9)); // imprime Setembro
}
}
1 curtida
class ex12a3
{
public static void main (String args [])
{
if (args.length>0)
{
switch (args [0].charAt(0))
{
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 e valido");
}
}
else System.out.println ("Valor nao valido");
}
}
qdo eu digito 10, 11 ou 12 ele nao escreve os meses referentes… e qdo eu compilo ele acusa erro por eu ter colocado case ‘10’ ou 11 ou 12
obrigada a todos
O erro não é no switch, é no caracter. Você está tentnado usar o caracter ‘10’, mas aí são dois caracteres: ‘1’ e ‘0’ 
Tente utilizar inteiros aoi invés de caracteres, e fazer seus case com ele.
Desculpe a minha ignorancia, mas como eu declaro isso? Quero dizer como eu declaro q eu quero a juncao dos caracteres 1 e 0? Seria case ‘1’&&‘0’ ou algo assim?
bjao e obrigada
Ao invés de
case '10':
System.out.println ("Outubro");break;
faça
case 10:
System.out.println ("Outubro");break;
sem aspas
agora eu vi que você está pegando o argumento da main. acho que pode ser assim:
int i = Integer.parseInt(args [0].charAt(0));
switch (i)
1 curtida
Nao consegui fazer funcionar…
HELP!!!
Foi mal, o código anterior dá pau por causa do char. Assim tá melhor:
public class Mes {
public static void main(String[] args){
if (args.length>0) {
String s = new String(args[0]);
int i = Integer.parseInt(s);
switch (i)
{
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 e valido");
}
}
}
}
1 curtida
Agradeco muito a sua ajuda, mas nao sei o q houve, copiei o seu codigo, compilei e ele nao me mostra mais nem o mes de janeiro qdo eu coloco 1… reparei q vc nao colocou aspas, entao eu tentei colocar pra ver se funcionava… tb nao funcionou!! O q sera q esta havendo???
bjao
Olá viviane… Acho que conheço o seu problema…
Se vc usa alguma IDE, esqueça por enquanto.
Compile o código do nosso colega Douglas e utilize a seguir o comando
java Mes <numero_do_mes> afinal, vc utiliza o args como arguimento. È batata, dá certinho… Testei agorinha
Bjos
Orlando
Eu estou usando o JCreator pra fazer esses programas… qdo eu compilo ele abre uma janela ja pra colocar os parametros do programa (no caso o numero do mes q eu quero)… nao entendi como eu vou usar o comando q vc falou… essa coisa nao funciona de JEITO NENHUM!
to ferrada, tenho q entregar isso amanha!!!!
mas obrigada assim mesmo
Viviane Saraiva
Viviane, eu tb testei no JCreator, e foi isso que deu errado.
1- cole o código no bloco de notas e salve em C: como Mes.java
2- utilize o comando javac Mes.java
3- digite java Mes 1
4- para testas o 2º dígito utilize java Mes 12
5- chuchubeleza
certo?
Bjocas
Orlando
Nao fique bravo comigo, por favor, afinal sou iniciante… mais uma pergunta…
2- utilize o comando javac Mes.java --ABRO UMA JANELA DO DOS PRA ISSO???
3- digite java Mes 1 – AINDA NO DOS???
4- para testas o 2º dígito utilize java Mes 12 – NO DOS???
SE FOR NO DOS, JA NAO CONSEGUI, ELE NAO RODA TB
AGRADECO SUA AJUDA E SUA PACIENCIA
UM FORTE ABRACO
Vê lá menina, também sou iniciante… Olha, você não usou nenhum tipo de interface com o usuário, então seu programa rodará em modo console, ou seja, pela telinha do DOS. Como vc usou o args[] como parâmetro, terá de inserir um argumento, e isso é feito via DOS por enquanto. ou Seja,
java Mes 12
este seu programa sempre rodará pelo DOS.
ainda não funcionou? poste detalhes então baby
a propósito, gostri do seu site
Bjocas
Ah ja to desistindo… fui no DOS e fiz exatamente isso… e nao funciona… fiz o lance pra compilar, ele tb nao compila… ou seja, nada acontece…
Ah, deixa pra la
Um gde bjo e obrigada assim mesmo
Viviane, na forma de array iria ficar assim:
public class Mes
{
private static final String[] meses =
{"Janeiro", "Fevereiro", "Março", "Abril",
"Maio", "Junho", "Julho", "Agosto",
"Setembro", "Outubro", "Novembro", "Dezembro" };
public static void main(String[] args)
{
if (args.length>0)
{
int indice=Integer.parseInt(args[0])-1;
System.out.println(meses[indice]);
}
}
}