Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

codigo com erro

o meu codigo ficou com essa alteracao:

public class Data {

    int dia;
    int mes;
    int ano;

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

}

public class Funcionario {
..
..
Data dataDeentrada;
..
..
public void mostra() {
..
..
System.out.println("Data de entrada: "   ?????????);

     }
}

qual argumento coloco no lugar de interrogacao pra imprimir a data?

6 respostas

Oi Leonardo, tudo bem ?

O que voce pode fazer é sobrescrever o método toString(), que é utilizado quando você precisa imprimir um objeto.

Então seu código deve ficar parecido com :

public class Data {

    int dia;
    int mes;
    int ano;

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

@Override
public String toString() {
  return dia +"/" + mes + "/" + ano;
}

}

public class Funcionario {
..
..
Data dataDeentrada;
..
..
public void mostra() {
..
..
System.out.println("Data de entrada:  "   + dataDeentrada);

Espero te ajudado. Bons estudos :)

deu certo...obrigado. mas como nao cheguuei nessa parte de toString(), nao entendi pq deu certo assim e do outro jeito nao deu...

Leonardo, para não precisar fazer o Override do método toString() você pode substituir suas "?????" pelo conteúdo do método dado pelo Caio. Ou seja:

public class Funcionario {
..
..
Data dataDeentrada;
..
..
public void mostra() {
..
..
System.out.println("Data de entrada: "   + this.dataDeentrada.dia + "/" + this.dataDeentrada.mes + "/" + this.dataDeentrada.ano);

     }
}

Onde this está referenciando o Funcionario que chamou o método.

solução!

Leonardo, faça assim:

public class Data {

    int dia;
    int mes;
    int ano;

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

    public String imprime() {
        return dia +"/" + mes + "/" + ano;
    }

}

public class Funcionario {
    ..
    ..
    Data dataDeentrada;
    ..
    ..
    public void mostra() {
        ..
        ..
        System.out.println("Data de entrada: " + dataDeentrada.imprime());

    }
}

Dessa forma, vc cria um método imprime() dentro da classe Data que será responsável por retornar uma String com o dia, mês e ano da data. E, sempre que vc precisar mostrar a data, basta chamar esse método criado.

EXTRA - informações mais avançadas: Quando vc executa o comando System.out.println(dataDeentrada) o Java sempre irá pedir ao objeto informado (nesse caso, o objeto dataDeentrada) para ele executar o método toString() que o Caio te mostrou. Todo objeto em Java tem esse método dentro dele (o motivo disso vc verá mais pra frente nos cursos de Java) e é o método que indica como o seu objeto deve ser representado em forma de String. Por padrão, o resultado do toString() é algo como nomeDaClasse@numero, por isso que quando vc tentou imprimir a data fazendo System.out.println(dataDeentrada) o resultado foi algo parecido com:

br.com.caelum.Data@123145

Daí, para mudar o comportamento padrão do toString(), basta vc implementar ele dentro da sua classe Data, da forma como o Caio te mostrou.

Ficou alguma dúvida?

Grande abraço!

muito obrigado...ficou muito claro!

Por nada, Leonardo!

Grande abraço e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software