Me foi pedido um exercício q leia dia/mes/ano e retorne qntos anos/meses/dias/horas/minutos/segundos foram vividos.
Até então tudo certo, mas eu tenho q dizer em q DIA DA SEMANA caiu a data informada.
Aqui está o codigo.
package aula4;
import java.util.Scanner;
import java.util.Calendar;
public class Data {
public static void main(String[] args) {
Calendar hoje = Calendar.getInstance();
Scanner input = new Scanner (System.in);
int dia;
int mes;
int ano;
int teste=0;
boolean valido = true;
while (teste==0){
System.out.printf("Dados de Nascimento:");
System.out.printf("\nDia:");
dia = input.nextInt();
System.out.printf("Mês:");
mes = input.nextInt();
System.out.printf("Ano:");
ano = input.nextInt();
if ((dia<1) || (dia>31)){
valido=false;
System.out.printf("\nDia Inválido!\n");
teste=0;
}
if ((mes<1) || (mes>12)){
valido=false;
System.out.printf("\nMês Inválido!\n");
teste=0;
}
if ((ano<1950) || (ano>2000)){
valido=false;
System.out.printf("\nAno Inválido!\n");
teste=0;
}
if (valido){
//dias
int anosVividos;
int mesesVividos;
int diasVividos;
//horas
int horasVividos;
int minutosVividos;
int segundosVividos;
//dia da semana
int diaDaSemana;
anosVividos = hoje.get(Calendar.YEAR) - ano;
System.out.printf("\nVocê Viveu %d Anos!", anosVividos);
mesesVividos = anosVividos*12 + hoje.get(Calendar.MONTH) + 1;
System.out.printf("\nVocê Viveu %d Meses!", mesesVividos);
diasVividos = mesesVividos*30 + hoje.get(Calendar.DAY_OF_MONTH);
System.out.printf("\nVocê Viveu %d Dias!", diasVividos);
horasVividos = diasVividos*24 + hoje.get(Calendar.HOUR_OF_DAY);
System.out.printf("\nVocê Viveu %d Horas!", horasVividos);
minutosVividos = horasVividos*60 + hoje.get(Calendar.MINUTE);
System.out.printf("\nVocê Viveu %d Minutos!", minutosVividos);
segundosVividos = minutosVividos*60 + hoje.get(Calendar.SECOND);
System.out.printf("\nVocê Viveu %d Minutos!", minutosVividos);
/*
diaDaSemana = (Calendar.DAY_OF_WEEK);
System.out.printf("\nVocê Nasceu no %dº Dia da Semana!", diaDaSemana);
*/
teste=1;
}
}
}
}
obrigado desde já.
Olá amigo, bem vindo ao guj.
Antes de mais nada, leia esse tópico, depois formate seu código corretamente, para que fique mais fácil de te ajudar, ok?
Flw! :thumbup:
Não cheguei a ver em detalhes o código, mas isso não resoveria?
diaDaSemana = hoje.get((Calendar.DAY_OF_WEEK));
System.out.printf("\nVocê Nasceu no %dº Dia da Semana!", diaDaSemana);
Ele irá retornar: Sunday, Monday, etc…
Documentação: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html#DAY_OF_WEEK
[]s
Na verdade isso retornaria um inteiro, depois você teria que fazer algo do tipo
switch (diaSemana) {
case Calendar.MONDAY:
System.out.println("Você nasceu numa Segunda!");
break;
case Calendar.TUESDAY:
...
}
Flw! :thumbup:
bom, marciocamurati.
dessa forma ele retornará o dia de hj, 11/9/08.
ele tem q retornar em q dia da semana caiu a data q eu informar no inicio… no caso meu aniversário.
20/4/1989.
Vou formatar o Código como pedido.
package aula4;
import java.util.Scanner;
import java.util.Calendar;
public class Exercicio5 {
public static void main(String[] args) {
Calendar hoje = Calendar.getInstance();
Scanner input = new Scanner (System.in);
int dia;
int mes;
int ano;
int teste=0;
boolean valido = true;
while (teste==0){
System.out.printf("Dados de Nascimento:");
System.out.printf("\nDia:");
dia = input.nextInt();
System.out.printf("Mês:");
mes = input.nextInt();
System.out.printf("Ano:");
ano = input.nextInt();
if ((dia<1) || (dia>31)){
valido=false;
System.out.printf("\nDia Inválido!\n");
teste=0;
}
if ((mes<1) || (mes>12)){
valido=false;
System.out.printf("\nMês Inválido!\n");
teste=0;
}
if ((ano<1950) || (ano>2000)){
valido=false;
System.out.printf("\nAno Inválido!\n");
teste=0;
}
if (valido){
//dias
int anosVividos;
int mesesVividos;
int diasVividos;
//horas
int horasVividos;
int minutosVividos;
int segundosVividos;
//dia da semana
int diaDaSemana;
anosVividos = hoje.get(Calendar.YEAR) - ano;
System.out.printf("\nVocê Viveu %d Anos!", anosVividos);
mesesVividos = anosVividos*12 + hoje.get(Calendar.MONTH) + 1;
System.out.printf("\nVocê Viveu %d Meses!", mesesVividos);
diasVividos = mesesVividos*30 + hoje.get(Calendar.DAY_OF_MONTH);
System.out.printf("\nVocê Viveu %d Dias!", diasVividos);
horasVividos = diasVividos*24 + hoje.get(Calendar.HOUR_OF_DAY);
System.out.printf("\nVocê Viveu %d Horas!", horasVividos);
minutosVividos = horasVividos*60 + hoje.get(Calendar.MINUTE);
System.out.printf("\nVocê Viveu %d Minutos!", minutosVividos);
segundosVividos = minutosVividos*60 + hoje.get(Calendar.SECOND);
System.out.printf("\nVocê Viveu %d Minutos!", segundosVividos);
/*diaDaSemana = diasVividos*24 + hoje.get(Calendar.DAY_OF_WEEK);
System.out.printf("\nVocê Nasceu Em Uma %dª Feira!", diaDaSemana);
*/
teste=1;
}
}
}
}
diaDaSemana teve ser igual a 5!
Então é só você criar um calendar com os dados que já tem, e com ele obter o dia da semana:
Calendar c = new GregorianCalendar(ano, mes, dia);
System.out.println(c.get(Calendar.DAY_OF_WEEK));
Flw! :thumbup:
Aliás, subtraia 1 do mês, visto que janeiro é 0, fevereiro é 1, etc.
aee
valew mesmo
obrigado!