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

Erro ao compilar:

Prezados,

Na hora de compilar apresenta o erro, eu procurei e não encontrei

Funcionario.java:43: error: ';' expected String getFormatada() { ^ 1 error

Segue o código que estou utilizando para estudo:

class Funcionario {

String nome; String rg; double salario; Data dataEntrada; String departamento;

public void recebeAumento(double valorDoAumento) { salario+=valorDoAumento; }

public double calculaGanhoAnual() { return this.salario*12; }

void mostra() { System.out.println(" "); System.out.println("Nome do funcionário: " + this.nome); System.out.println("Rg :" + this.rg); System.out.println("Departamento: " + this.departamento); System.out.println("Salario R$: " + this.salario); System.out.println("Salario ano R$: " + this.calculaGanhoAnual()); System.out.println("Data admissão: " + this.dataEntrada); System.out.println("Dia: " + this.dataEntrada.dia); System.out.println("Mês: " + this.dataEntrada.mes); System.out.println("Ano: " + this.dataEntrada.ano); System.out.println("Data formatada: " + this.dataEntrada.getFormatada()); } }

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

void preencheData (int dia, int mes, int ano) {

this.dia = dia; this.mes = mes; this.ano = ano;

String getFormatada() { return this.dia + "/" + this.mes + "/" + this.ano; } } }

class Trabalho {

public static void main(String[]args) {

Funcionario funcionario1 = new Funcionario(); funcionario1.nome = "João Pé de Feijão"; funcionario1.rg = "123456789"; funcionario1.salario = 2000.0; funcionario1.departamento = "Administrativo"; funcionario1.dataEntrada = new Data(); funcionario1.dataEntrada.preencheData(1, 7, 2009);

Funcionario funcionario2 = new Funcionario(); funcionario2.nome = "João Pé de Feijão"; funcionario2.rg = "123456789"; funcionario2.salario = 2000.0; funcionario2.departamento = "Administrativo"; funcionario2.dataEntrada = new Data(); funcionario2.dataEntrada.preencheData(1, 7, 2009);

funcionario1.recebeAumento(200); funcionario1.mostra();

funcionario2.recebeAumento(200); funcionario2.mostra();

if (funcionario1 == funcionario2) { System.out.println("iguais"); } else { System.out.println("diferentes"); }

} }

5 respostas

Olá, acredito que você errou na hora de fechar o método preencheData da classe Data.

Seu código deveria ficar como o abaixo.

class Funcionario {

    String nome;
    String rg;
    double salario;
    Data dataEntrada;
    String departamento;

    public void recebeAumento(double valorDoAumento) {
        salario += valorDoAumento;
    }

    public double calculaGanhoAnual() {
        return this.salario * 12;
    }

    void mostra() {
        System.out.println(" ");
        System.out.println("Nome do funcionário: " + this.nome);
        System.out.println("Rg :" + this.rg);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Salario R$: " + this.salario);
        System.out.println("Salario ano R$: " + this.calculaGanhoAnual());
        System.out.println("Data admissão: " + this.dataEntrada);
        System.out.println("Dia: " + this.dataEntrada.dia);
        System.out.println("Mês: " + this.dataEntrada.mes);
        System.out.println("Ano: " + this.dataEntrada.ano);
        System.out.println("Data formatada: " + this.dataEntrada.getFormatada());
    }
}

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

    void preencheData(int dia, int mes, int ano) {

        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

    String getFormatada() {
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}

class Trabalho {

    public static void main(String[] args) {

        Funcionario funcionario1 = new Funcionario();
        funcionario1.nome = "João Pé de Feijão";
        funcionario1.rg = "123456789";
        funcionario1.salario = 2000.0;
        funcionario1.departamento = "Administrativo";
        funcionario1.dataEntrada = new Data();
        funcionario1.dataEntrada.preencheData(1, 7, 2009);

        Funcionario funcionario2 = new Funcionario();
        funcionario2.nome = "João Pé de Feijão";
        funcionario2.rg = "123456789";
        funcionario2.salario = 2000.0;
        funcionario2.departamento = "Administrativo";
        funcionario2.dataEntrada = new Data();
        funcionario2.dataEntrada.preencheData(1, 7, 2009);

        funcionario1.recebeAumento(200);
        funcionario1.mostra();

        funcionario2.recebeAumento(200);
        funcionario2.mostra();

        if (funcionario1 == funcionario2) {
            System.out.println("iguais");
        } else {
            System.out.println("diferentes");
        }

    }
}
solução!

Segue a correção, você colocou o método getFormatada dentro do método preencheData:

class Data { 
    int dia; 
    int mes; 
    int ano;
    void preencheData (int dia, int mes, int ano)  {
        this.dia = dia; 
        this.mes = mes; 
        this.ano = ano;

// erro aqui, voce não fechou o método preencheData

    String getFormatada() { 
        return this.dia + "/" + this.mes + "/" + this.ano; 
    } 
    } // voce fechou o método preencheData aqui, deixando o método getFormatada dentro do método preencheData
 } // fim da classe

Reformula e compila novamente... Qual IDE está utilizando? Recomendo eclipse oxygen.

Oi Gabriel,

Eu ajustei aqui, seguindo suas orientações e funcionou.

Obrigado pelo apoio.

Will

Eu tenho uma dúvida com relação a resposta do Silvio. Você criou o método:

String getFormatada(){
        return this.dia + "/" + this.mes + "/" + this.ano;
    }

mas eu não poderia criar um método:

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

Porque eu fiz dessa outra forma (com um método void) e o Eclipse sinalizou exatamente o que você fez, que o método deveria ser uma String.

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