Criar uma classe Data que tenha os atributos dia, mês e ano

A classe deve conter o método fixarData que recebe como argumento os valores de dia, mês e ano. O método fixarData deve realizar a validação da data. Deve-se criar também o método mostrarData, responsável por imprimir no console a data no formato: “dd/mm/aaaa”.

Ai vc quer que alguém faça pra você ?
Nossa é incrível sério é só voltar as férias que o pessoal começa aqui, porra, pelo menos cria a classe com os atributos e joga aqui, faz um esboço mesmo que feio do método e a galera vai ajudando, mas só jogar o enunciado é muita sacangem.
Agora se nem isso você sabe fazer

2 curtidas

Vou tentar te ajudar! Escrevi abaixo um esboço de como seria o programa (de forma bem simples, sem levar em conta os modificadores de acesso da linguagem). Deixei algumas ideias pra te ajudar a implementar a validação da data no método fixarData.

class Data {
      int dia;
      String mes;
      ano;
      
      void fixarData(int dia, int mes, int ano) {
            /*Code here. Antes de tudo, implemente uma validação 
            para saber se o ano é bissexto ou não, pois isso irá definir a 
            quantidade de dias do mês de fevereiro. Feito isso, pense 
            em como cada mês tem quantidades de dias diferentes.
            Por exemplo, se mes = "janeiro", então 0 < dia < 31. Vá 
            pensando dessa forma e implementando. Dica: Use google para 
            obter as informações que você precisa. Ex: Como descobrir se o ano 
            é bissexto*/
      } 
      void mostrarData() {
            System.out.println(this.dia+"/"+this.mes+"/"+this.ano);
      }
      
      public static void main(String[] args) {
           Data data = new Data(); /*Instanciando a classe Data 
                                  (criando o objeto data a partir da classe Data)*/
           data.fixarData(2, "março", 2016);
           data.mostrarData();
      }
 }
1 curtida

Muito obrigado. Tentei fazer, mas está dando erro em fevereiro. Será que você pode me ajudar?!

public class Data {
public int dia;
public int mes;
public int ano;

public void fixarData(int dia, int mes, int ano) {
	boolean datavalida = true;
	if ((mes >= 1) && (mes <= 12)) {
		if ((mes == 1) || (mes == 3) || (mes == 5) || (mes == 7) || (mes == 8) || (mes == 10) || (mes == 12)) {
			if ((dia >= 1) && (dia <= 31)) {
				datavalida = true;
			}
		}else if ((mes == 4) || (mes == 6) || (mes == 9) || (mes == 11)) {
			if ((dia >= 1) && (dia <= 30)) {
				datavalida = true;
			}
		}else if (mes == 2) {
			if (ano % 4 == 0) {
				if ((dia >= 1) && (dia <= 29)) {
					datavalida = true;
				}
			}
			if (ano % 4 > 0) {
				if ((dia >= 1) && (dia <= 28)) {
					datavalida = true;
				}

			}else {
				datavalida = false;
			}
		}
		if (ano < 0) {
			datavalida = false;
		}
	}else {
		datavalida = false;
	}
	if (datavalida) {
		this.dia = dia;
		this.ano = ano;
		this.mes = mes;
	}else {
		System.out.println("Data inválida");
	}

}

public String mostrarData() {
	return String.format("%d/%d/%d", dia, mes, ano);
}

}

public class Datas {

public static void main(String[] args) {

	Data dt = new Data();
	dt.fixarData(10000, 2, 2015);
	System.out.println("Data:" + " " + dt.mostrarData());
}

}

1 curtida

Olá! Como eu não consegui encontrar o erro no seu código, acabei fazendo o meu próprio. Fiz algumas modificações na sugestão que te mandei. Por exemplo, criei um método construtor e ao invés do método fixarData, criei o método validaData que devolve um boolean. Abaixo está o meu código:

Obs: usei esse link http://ciencia.hsw.uol.com.br/ano-bissexto1.htm para saber como calcular se um ano é bissexto.

public class Data {
	int dia;
	int mes;
	int ano;

	public Data(int dia, int mes, int ano) {
		this.dia = dia;
		this.mes = mes;
		this.ano = ano;
	}

	public boolean validaData() {

		if(ano >= 0) {

			if((mes >= 1) && (mes <=12)) {

				if(mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) {
					if (dia >= 1 && dia <= 31) {
						return true;
					}
					else {
						return false;
					}
				}
				else if(mes == 4 || mes == 6 || mes == 9 || mes == 11) {

					if (dia >= 1 && dia <= 30) {
						return true;
					}
					else {
						return false;
					}
				}
				else {
				//Mês de fevereiro
					if(ano % 4 != 0) { //Ano não é bissexto

						if(dia >= 1 && dia <= 28) {
							return true;
						} else {
							return false;
						}
					}
					else if(ano % 4 == 0) {//Ano pode ser bissexto

						if(ano % 100 != 0) { //Ano bissexto

							if(dia >= 1 && dia <= 29) {
								return true;
							}
							else {
								return false;
								}
						}
						else {

							if(ano % 400 == 0) {
								return true;
							}
							else {
								return false;
							}
						}
					}
				} 
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
		return true;
	}


	public void mostrarData() {
		if(validaData()) {
			System.out.println(this.dia+"/"+this.mes+"/"+this.ano);	
		}
		else {
			System.out.println("Data não é válida.");
		}
	}

	public static void main(String[] args) {

		Data data = new Data(30,2,2016);
		data.validaData();
		data.mostrarData();
	} 
}

Obrigado pela ajuda!!!

1 curtida