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

Problema com mostra(); Ex 3 - Aula 3

Boa tarde galera, não estou conseguindo fazer rodar o mostra..

Segue o código:

class Funcionario {
    String nome;
    String departamento;
    double salario;
    String entrada;
    String rg;

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

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

    void mostra() {
        System.out.println("Funcionario: " + f1.nome);
        System.out.println("RG: " + f1.rg);
        System.out.println("Entrou na empresa em: " + f1.entrada);
        System.out.println("Trabalha no departamento de: " + f1.departamento);
        System.out.println("Salario atual: R$" + f1.salario);
        System.out.println("Salario Anual: " + f1.calculoGanhaAnual());
    }
}

class TestaFuncionario {

    public static void main (String[] args) {
        Funcionario f1 = new Funcionario();

        f1.nome = "Hugo";
        f1.salario = 1000;
        f1.recebeAumento(50);
        f1.rg = "123456789";
        f1.entrada = "20/03/1950";
        f1.departamento = "Vendas";
        f1.mostra();
    }
}

Segue o erro:

Funcionario.java:17: error: cannot find symbol
        System.out.println("Funcionario: " + f1.nome);
                                             ^
  symbol:   variable f1
  location: class Funcionario
Funcionario.java:18: error: cannot find symbol
        System.out.println("RG: " + f1.rg);
                                    ^
  symbol:   variable f1
  location: class Funcionario
Funcionario.java:19: error: cannot find symbol
        System.out.println("Entrou na empresa em: " + f1.entrada);
                                                      ^
  symbol:   variable f1
  location: class Funcionario
Funcionario.java:20: error: cannot find symbol
        System.out.println("Trabalha no departamento de: " + f1.departamento);
                                                             ^
  symbol:   variable f1
  location: class Funcionario
Funcionario.java:21: error: cannot find symbol
        System.out.println("Salario atual: R$" + f1.salario);
                                                 ^
  symbol:   variable f1
  location: class Funcionario
Funcionario.java:22: error: cannot find symbol
        System.out.println("Salario Anual: " + f1.calculoGanhaAnual());
                                               ^
  symbol:   variable f1
  location: class Funcionario
6 errors

Att,

7 respostas
solução!

Olá Murilo,

Na classe Funcionario, tire o f1 do método mostra, em vez de ser assim:

System.out.println("Funcionario: " + f1.nome);

fica assim:

 System.out.println("Funcionario: " + .nome);

e etc...

Na classe Funcionario, você não precisa usar f1, já que f1 foi usado na classe TestaFuncionario para se referir a um objeto do tipo Funcionario.

Att,

Muito obrigado pela ajuda!! Consegui também utilizando o "this.", estaria errado utilizar assim?

Nesse contexto ficaria estranho sim, já que se você tirar o f1 o this já fica implícito.

Att,

Hmmm bom saber,

Fiz o que falou, remover os "f1" e deixar somente os ".nome", ".entrada" etc, porém deu erro.

Segue como ficou :

class Funcionario {
    String nome;
    String departamento;
    double salario;
    String entrada;
    String rg;

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

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

    void mostra() {
        System.out.println("Funcionario: " + .nome);
        System.out.println("RG: " + .rg);
        System.out.println("Entrou na empresa em: " + .entrada);
        System.out.println("Trabalha no departamento de: " + .departamento);
        System.out.println("Salario atual: R$" + .salario);
        System.out.println("Salario Anual: " + .calculoGanhaAnual());
    }
}

class TestaFuncionario {

    public static void main (String[] args) {
        Funcionario f1 = new Funcionario();

        f1.nome = "Hugo";
        f1.salario = 1000;
        f1.recebeAumento(50);
        f1.rg = "123456789";
        f1.entrada = "20/03/1950";
        f1.departamento = "Vendas";
        f1.mostra();
    }
}

Erros:

.\Funcionario.java:17: error: illegal start of expression
        System.out.println("Funcionario: " + .nome);
                                             ^
.\Funcionario.java:17: error: ';' expected
        System.out.println("Funcionario: " + .nome);
                                              ^
.\Funcionario.java:17: error: illegal start of expression
        System.out.println("Funcionario: " + .nome);
                                                  ^
.\Funcionario.java:18: error: illegal start of expression
        System.out.println("RG: " + .rg);
                                    ^
.\Funcionario.java:18: error: ';' expected
        System.out.println("RG: " + .rg);
                                     ^
.\Funcionario.java:18: error: illegal start of expression
        System.out.println("RG: " + .rg);
                                       ^
.\Funcionario.java:19: error: illegal start of expression
        System.out.println("Entrou na empresa em: " + .entrada);
                                                      ^
.\Funcionario.java:19: error: ';' expected
        System.out.println("Entrou na empresa em: " + .entrada);
                                                       ^
.\Funcionario.java:19: error: illegal start of expression
        System.out.println("Entrou na empresa em: " + .entrada);
                                                              ^
.\Funcionario.java:20: error: illegal start of expression
        System.out.println("Trabalha no departamento de: " + .departamento);
                                                             ^
.\Funcionario.java:20: error: ';' expected
        System.out.println("Trabalha no departamento de: " + .departamento);
                                                              ^
.\Funcionario.java:20: error: illegal start of expression
        System.out.println("Trabalha no departamento de: " + .departamento);
                                                                          ^
.\Funcionario.java:21: error: illegal start of expression
        System.out.println("Salario atual: R$" + .salario);
                                                 ^
.\Funcionario.java:21: error: ';' expected
        System.out.println("Salario atual: R$" + .salario);
                                                  ^
.\Funcionario.java:21: error: illegal start of expression
        System.out.println("Salario atual: R$" + .salario);
                                                         ^
.\Funcionario.java:22: error: illegal start of expression
        System.out.println("Salario Anual: " + .calculoGanhaAnual());
                                               ^
.\Funcionario.java:22: error: ';' expected
        System.out.println("Salario Anual: " + .calculoGanhaAnual());
                                                ^
.\Funcionario.java:22: error: -> expected
        System.out.println("Salario Anual: " + .calculoGanhaAnual());
                                                                   ^
.\Funcionario.java:22: error: not a statement
        System.out.println("Salario Anual: " + .calculoGanhaAnual());
                                                                 ^
.\Funcionario.java:26: error: duplicate class: TestaFuncionario
class TestaFuncionario {
^
20 errors

Olá Murilo, boa tarde.

Este erro é por causa daqueles pontos que faltou tirar no método mostra:

void mostra() {
        System.out.println("Funcionario: " + nome);
        System.out.println("RG: " + rg);
        System.out.println("Entrou na empresa em: " + entrada);
        System.out.println("Trabalha no departamento de: " + departamento);
        System.out.println("Salario atual: R$" + salario);
        System.out.println("Salario Anual: " + calculoGanhaAnual());
    }

Abraço.

Maravilha, funcionou agora! Muito obrigado! :D

Desculpe Murilo, esqueci de tirar o ponto na edição .

P.S: usar this.f1.nome = muito estranho. usar this.nome = totalmente aceitável.

Bons estudos.

Att,