Data fornecida pelo usuário

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 !!!

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

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…

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;
   }
}