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

Exercicio 3 aula 6

Meu código não quer aceitar o seguinte método da classe data

void apresentaData(){
        this.dia + "/" + this.mes + "/" + this.ano;
}

apresenta o seguinte erro "novoFuncionario.java:78: error not a statement this.dia + "/" + this.mes + "/" + this.ano; 1 error

7 respostas

Você poderia colocar o error completo? E se possível coloca o seu código aqui, para que outras pessoas possam ver o erro e lhe ajudar de uma maneira mais rápida.

class Funcionario {

    private double salario;
    public double getSalario(){
        return this.salario;
    }
    public double setSalario(double salario) {
        return this.salario = salario;
    }

    private int numero;
    public int getNumero(){
        return this.numero;
    }
    public int setNumero(int numero) {
        return this.numero = numero;
    }

    private String nome;
    public String getNome(){
        return this.nome;
    }
    public String setNome(String nome){
        return this.nome = nome;
    }

    private int idade;
    public int getIdade(){
        return this.idade;
    }
    public int setIdade(int idade){
        return this.idade = idade;
    }

    Data admicao;

    private String cargo;
    public String getCargo(){
        return this.cargo;
    }
    public String setCargo(String cargo){
        return this.cargo = cargo;
    }

    public void recebeAumento(double aumento) {
        this.salario += aumento;
    }

    public void promocao(String novoCargo){
        this.cargo = novoCargo;
    }

    public double calculaGanhoAnual() {
        double ano = this.salario * 12;
                return ano;
    }
    void mostra(){
            System.out.println("Nome funcionario: " + this.nome);
            System.out.println("Numero funcionario: " + this.numero);
            System.out.println("Salario funcionario: " + this.salario);
            System.out.println("Idade funcionario: " + this.idade);
            System.out.println("Cargo funcionario: " + this.cargo);
            this.admicao.apresentaData();
            System.out.println("Ganho Anual do funcionario: " + this.calculaGanhoAnual());
    }
    public Funcionario(double salario, String nome, int idade, int numero){
        this.salario = salario;
        this.nome = nome;
        this.idade = idade;
        this.numero = numero;
        //this.admicao.preencheData = admicao;
    }
}

class Data{
        private int dia;
        private int mes;
        private int ano;
        void preencheData(int dia, int mes, int ano){
            this.dia = dia;
            this.mes = mes;
            this.ano = ano;
        }        
        void apresentaData(){
            System.out.println("Admição funcionario: " + this.dia + "/" + this.mes + "/" + this.ano);
        }
        public Data(int dia, int mes, int ano){
            this.dia = dia;
            this.mes = mes;
            this.ano = ano;
        }
}

class Empresa {
        private String nome;
        public String getNome() {
            return this.nome;
        }
        public String setNome(String nome) {
            return this.nome = nome;
        }

        private Funcionario[] funcionarios;
        public Funcionario getFuncionario (int posicao) {
            return this.funcionarios[posicao];
            }

        private    int cnpj;
        public int getCnpj(){
            return this.cnpj;
        }
        public int setCnpj(int cnpj){
            return this.cnpj = cnpj;
        }                    
}

class Teste{
    public static void main(String args[]){
        Funcionario F1 = new Funcionario(1800, "Alice Gamaletri", 25, 8);
        F1.admicao = new Data(15, 8, 2013);
        F1.mostra();
        //Empresa F1 = new Empresa(Gerdal, Fabricio(85), 18998862);
    }
}

Eu acabei fazendo a própria função se encarregar de System.out mas eu queria uma outra forma de fazer.

Olá. Você gostaria de criar um método para apresentar a data, no formado "dd/MM/yyyy". Este método precisa RETORNAR um valor (String), logo, não pode ser ter a palavra reservada

void

Conclusão: Tente o seguinte:

public String apresentaData() {
     String dataFormatada = this.dia + "/" + this.mes + "/" + this.ano;
     return dataFormatada;
}

Esperto ter ajudado. Abraços.

Mas dia, mes e ano estão em declaradas como int isso não vai dar erro.

Boa tarde Allonso, no método apresentaData() você tem duas escolhas: 1° no próprio método imprimir o texto:

public void apresentaData() {
     System.out.println( this.dia + "/" + this.mes + "/" + this.ano );
}

2° Você pode fazer o método retorna uma String como já foi dito. fazendo:

public String apresentaData() {
     return String.valueOf( this.dia + "/" + this.mes + "/" + this.ano );
}

ou

public String apresentaData() {
     // dia/mês/ano
     return String.format( "%s / %s / %s" , this.dia , this.mes , this.ano );
}

Espero ter ajudado

solução!

Respondendo "Mas dia, mes e ano estão em declaradas como int isso não vai dar erro?" Não, não irá ocorrer erro. Você pode realizar testes utilizando o método "main" para imprimir String concatenando com int

public static void main(String[] args) {
    int numero = 1;
    String mensagem = "Número : " + numero;
    System.out.println(mensagem);
}

Gostaria também de retificar minha resposta anterior, dando a seguinte dica: 1º Crie o método retornando String conforme dito:

public String apresentaData() {
     String dataFormatada = this.dia + "/" + this.mes + "/" + this.ano;
     return dataFormatada;
}

2º No seu método "mostra()", faça o seguinte:

void mostra(){
    //...código anterior
    System.out.println(this.admicao.apresentaData());
    //...restante do código
    }

Espero ter ajudado.