Duvida sobre a Classe Calendar

7 respostas
Murillo_Casa_Grande

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á.

7 Respostas

von.juliano

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:

marciocamurati

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

von.juliano

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:

Murillo_Casa_Grande

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!

von.juliano

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:

von.juliano

Aliás, subtraia 1 do mês, visto que janeiro é 0, fevereiro é 1, etc.

Murillo_Casa_Grande

aee
valew mesmo
obrigado!

Criado 11 de setembro de 2008
Ultima resposta 11 de set. de 2008
Respostas 7
Participantes 3