Data fornecida pelo usuário

3 respostas
C

Olá Pessoal.

Bom estou fazendo um projeto e foi solicitado para eu criar um método que receba uma data (dd/mm/aaaa) e diga a que dia da semana a mesma corresponde. Por exemplo, se for feita a seguinte chamada:

String s = weekDay ( 04, 03, 2007)

o valor de s deverá ser “Domingo”.

Esse método deverá ultilizar o joptionpane.

Eu tentei fazer o código, porém ele está como se fosse um looping infinito, repetindo várias vzs para o usuário informar o dia o mes e o ano !!! Naum sai dissu e naum exibe nenhum resultado !!!

Estou tentando encontrar meu erro, se alguém puder me ajudar segu abaixo mew código fonte !!!

Valew

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

.
.
.
.

public String weekDay(int dia, int mes, int ano){

String x=( JOptionPane.showInputDialog(null, Digite o dia));

dia=Integer.parseInt(x);

String y=( JOptionPane.showInputDialog(null, Digite o mes));

mes=Integer.parseInt(y);

String z=( JOptionPane.showInputDialog(null, Digite o ano com 4 digitos));

ano=Integer.parseInt(z);

String s = weekDay (dia, mes, ano);

try

{

SimpleDateFormat format = new SimpleDateFormat(dd/MM/yyyy);

Date data = new Date((format.parse(s)).getTime());

Calendar cal = Calendar.getInstance();

cal.setTime( data );
switch( cal.get(Calendar.DAY_OF_WEEK) )   
    {   
        case 1: JOptionPane.showMessageDialog(null,"Domingo");break;   
        case 2: JOptionPane.showMessageDialog(null,"Segunda");break;  
        case 3: JOptionPane.showMessageDialog(null,"Terça");break;   
        case 4: JOptionPane.showMessageDialog(null,"Quarta");break;   
        case 5: JOptionPane.showMessageDialog(null,"Quinta");break;   
        case 6: JOptionPane.showMessageDialog(null,"sexta");break;   
        case 7: JOptionPane.showMessageDialog(null,"sábado");break;   
        default: JOptionPane.showMessageDialog(null,"erro");break;   
    }   
       
}   
   
catch( Exception e )   
{   
    e.printStackTrace();   
}   


return s;

}

}

OBS : eu criei uma otra classe com o metodo main para exibir !!!

3 Respostas

_Renatu

Mostra pra gente a classe que tá chamando esse método, por favor?

Romeo

String s = weekDay (dia, mes, ano);

essa linha é o problema, pois vc esta chamando o método de novo, ai entra em looping mesmo.

Agora me explica uma coisa, pq diabos vc declarou o método recebendo 3 int e logo que começa vc os sobreescreve??? Isso é sinistro…

ziegfried

Realmente ficou sinistra essa tentativa de recursão…
Outra coisa… Ou você passa parâmetros e faz a entrada de dados fora do método; ou você implementa esse método sem parâmetros e com as entradas do usuário dentro… Jamais os 2 como você mostrou!

Eu faria assim:

public String weekDay(int dia, int mes, int ano) {
   String weekDay = null;

   try {
      Calendar cal = Calendar.getInstance(new Locale("pt", "BR"));
      cal.set(Calendar.DATE, dia);
      cal.set(Calendar.MONTH, mes);
      cal.set(Calendar.YEAR, ano);
      weekDay = new SimpleDateFormat("EEEE").format(cal.getTime);
   } catch (ParseException e) {
      e.printStackTrace();
   } finally {
      return weekDay;
   }
}
Criado 25 de março de 2007
Ultima resposta 25 de mar. de 2007
Respostas 3
Participantes 4