Dia da semana

Salve!
Estou tentando resolver um problema lógico aqui, porém estou com problemas…

Tenho que retornar o dia da semana em que um determinado dia cai.

Exemplo: Dia 16 do mês de abril do ano de 2006. será um Domingo. ( dia da semana = 1)

Olhem o que estou tentando fazer

[code]/**
*

  • Desenvolver um programa que calcule quantos dias de vida
  •  o usuário tem e em que dia da semana ele nasceu
    

*/

package nivel1;

import java.util.Calendar;
import java.util.Date;

public class DiasDeVida {

public void Calcula(int AnoNasc, int MesNasc, int DiaNasc) {
	
	Date data = new Date();
	Calendar cal = Calendar.getInstance();
	int anoInit = AnoNasc - 1900;
	data.setDate(DiaNasc);
	data.setYear(anoInit);
	data.setMonth(MesNasc);
	cal.setTime(data);
	
	//int diasVida = (cal.get(Calendar.YEAR) - AnoNasc) * 365;
	//int diaNasc = cal.get(Calendar.DAY_OF_MONTH);
	
	System.out.println(cal.get(Calendar.DAY_OF_WEEK));
}

public static void main(String[] args) {
	DiasDeVida este = new DiasDeVida(); 
	este.Calcula(2006,4,16);
}

}[/code]

Coisas estranhas:

  1. Na variável anoInit tenho que subtrair 1900 do valor passado pelo usuário, sempre!
  2. Mesmo ele retornando o dia, mês e ano certos, o dia da semana ele retorna errado. Para a data passada no método, ele retorna 3.(Terça-feira)
  3. Se eu não definir o data.set*(…) os problemas acima não ocorrem, porém, não tem sentido, pois ele usará a data atual e não a estipulada.
  4. Os métodos data.set*() estão em decadencia. Logo, o que eu poderia usar no lugar deles ?

Espero que alguém, possa me indicar algo…

Abraços!

Isso é algum tipo de trabalho de faculdade? Se não for use o que já existe…

GregorianCalendar cal = new GregorianCalendar(); int dia = cal.get(Calendar.DAY_OF_WEEK);