ola pessoal, preciso que o codigo em questao insira um numero inteiro e imprima o mes referente ao numero, e que faça isso ate que seja digitado o numero 0 e encerre o laço;
ja olhei em outros topicos e nao encontrei a soluçao;
quando digito o numero me da um laço infinito;
import java.util.Scanner;
public class Mes {
public static void main (String [] args) {
Scanner s = new Scanner (System.in);
System.out.println("Digite o numero correspondente ao mês : ");
int num = s.nextInt();
while (num != 0) {
switch (num) {
case 1:
System.out.println("Janeiro");
break;
case 2:
System.out.println("Fevereiro");
break;
case 3:
System.out.println("Março");
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("Apenas numeros de 1 a 12 são validos");
}
}
}
}
import javax.swing.JOptionPane;
public class Meses {
public static void main(String[] args) {
String st = "Informe um número entre 1 e 12";
st = JOptionPane.showInputDialog(null,st);
byte mes = Byte.parseByte(st);
switch (mes) {
case 1:
st = "janeiro";
break;
case 2:
st = "fevereiro";
break;
case 3:
st = "março";
break;
case 4:
st = "abril";
break;
case 5:
st = "maio";
break;
case 6:
st = "junho";
break;
case 7:
st = "julho";
break;
case 8:
st = "agosto";
break;
case 9:
st = "setembro";
break;
case 10:
st = "outubro";
break;
case 11:
st = "novembro";
break;
case 12:
st = "dezembro";
break;
default:
st = "Mês inválido!";
JOptionPane.showMessageDialog(null,st,"Erro",0);
System.exit(0);
}
st = "Você escolheu o mês de " + st;
JOptionPane.showMessageDialog(null,st,"Mensagem",1);
System.exit(0);
}
}
public class Meses {
public static void main(String[] args) {
String st = “Informe um número entre 1 e 12”;
st = JOptionPane.showInputDialog(null,st);
byte mes = Byte.parseByte(st);
switch (mes) {
case 1:
st = "janeiro";
break;
case 2:
st = "fevereiro";
break;
case 3:
st = "março";
break;
case 4:
st = "abril";
break;
case 5:
st = "maio";
break;
case 6:
st = "junho";
break;
case 7:
st = "julho";
break;
case 8:
st = "agosto";
break;
case 9:
st = "setembro";
break;
case 10:
st = "outubro";
break;
case 11:
st = "novembro";
break;
case 12:
st = "dezembro";
break;
default:
st = "Mês inválido!";
JOptionPane.showMessageDialog(null,st,"Erro",0);
System.exit(0);
}
st = "Você escolheu o mês de " + st;
JOptionPane.showMessageDialog(null,st,"Mensagem",1);
System.exit(0);
}
}
[/code][/quote]
o meu tambem funciona desse jeito que vc fez, so que preciso que quando vc digite o numero e imprima o mes e volte para digitar denovo, o numero, ate que digite o 0 para sair;
tipo um menu…
import java.util.Scanner;
public class Mes {
public static void main (String [] args) {
String[] meses = {"janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho",
"agosto", "setembro", "outubro", "novembro", "dezembro"};
Scanner s = new Scanner (System.in);
System.out.println("Digite o numero correspondente ao mês : ");
int num = Integer.parseInt(s.nextLine());
while (num != 0) {
if (num < 1 || num > 12)
System.out.println("Apenas meses de 1 a 12 são validos");
else
System.out.println(meses[num-1]);
num = Integer.parseInt(s.nextLine());
}
}
}
No projeto que eu trabalhei, eu precisei que os meses fossem retornados em uma língua especifíca… sendo assim tive que substituir o vetor de meses, pela API Calendar, mesclei o código com a solução que encontrei, pensei ser pertinente postar o código aqui, já que o Vini pode fazer alguma observação de melhora do mesmo, segue:
[code]package food;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.Scanner;
public class Mes {
Mes(Locale localeUser, String pattern){
this.localeuser = localeUser;
sdf = new SimpleDateFormat(pattern,localeuser);
}
public Locale localeuser;
private SimpleDateFormat sdf;
public String getMes(int mes){
Calendar calendar = Calendar.getInstance(localeuser);
calendar.set(Calendar.MONTH, mes-1);
String textoMes = sdf.format(calendar.getTime());
return textoMes;
}
public static void main (String [] args) {
//Mes m = new Mes(new Locale("pt", "BR"),"MMMM");
Mes m = new Mes(new Locale("en","US"),"MMMM");
Scanner s = new Scanner (System.in);
System.out.println("Digite o numero correspondente ao mês : ");
int num = Integer.parseInt(s.nextLine());
while (num != 0) {
if (num < 1 || num > 12)
System.out.println("Apenas meses de 1 a 12 são validos");
else
System.out.println(m.getMes(num));
num = Integer.parseInt(s.nextLine());
}
}
[quote=ViniGodoy]Claro, pra que complicar o que é simples…
import java.util.Scanner;
public class Mes {
public static void main (String [] args) {
String[] meses = {"janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho",
"agosto", "setembro", "outubro", "novembro", "dezembro"};
Scanner s = new Scanner (System.in);
System.out.println("Digite o numero correspondente ao mês : ");
int num = Integer.parseInt(s.nextLine());
while (num != 0) {
if (num < 1 || num > 12)
System.out.println("Apenas meses de 1 a 12 são validos");
else
System.out.println(meses[num-1]);
num = Integer.parseInt(s.nextLine());
}
}
}[/quote]
obrigado viny e ribclauport , nem tinha pensado em usar arrays, é sompre bom aprender mais, vou guardar essas podem ser uteis mais pra frente
[code]package food;
import java.util.DateFormatSymbols;
import java.util.Calendar;
import java.util.Locale;
import java.util.Scanner;
public class Mes {
private Locale localeUser;
Mes(Locale localeUser){
this.localeuser = localeUser;
}
public String getMes(int mes){
String meses[] = new DateFormatSymbols(localeUser).getMonths();
return meses[mes-1];
}
public static void main (String [] args) {
//Mes m = new Mes(new Locale("pt", "BR"));
Mes m = new Mes(new Locale("en","US"));
Scanner s = new Scanner (System.in);
System.out.println("Digite o numero correspondente ao mês : ");
int num = Integer.parseInt(s.nextLine());
while (num != 0) {
if (num < 1 || num > 12)
System.out.println("Apenas meses de 1 a 12 são validos");
else
System.out.println(m.getMes(num));
num = Integer.parseInt(s.nextLine());
}
}
} [/code]
É claro que não tem a flexibilidade e escolher o formato do mês (no caso, eu usaria mesmo o seu código), mas se isso não é necessário, esse método é bem mais leve (o que pode ser útil se vc estiver fazendo uma rotina para converter milhares de registros de um BD, por exemplo). O DateFormatSymbols também tem o método getAvailableLocales() que retorna todos os locales para os quais o java possui formato de data disponível.