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

Dúvida no Ex. 4 da Aula 4 - Arrays

Olá no meu código abaixo aparece o seguinte erro nas linhas 40 e 41:

  • cannot find symbol

relativo aos pontos presentes nas duas linhas antes do MOSTRA();

Eu achei que não poderia colocar duas classes com main no mesmo arquivo e portanto estava tentando fazer uma classe separada com um VOID MOSTRA{} em um arquivo com apenas duas classes, class Empresa e class TestaEmpresa. Depois achei que essa poderia ser a razão .

Aí decidi por "unificar" o código.

JAVA é a primeira linguagem que eu tento aprender, fiz um curso de lógica de linguagem com javascript pra auxiliar um pouco. Mas muitas vezes me sinto perdido na sintaxe do código, é normal ter tantas dúvidas assim no início?

Segue meu código:

class Empresa {
String nome;
Funcionario[] empregados;
int cnpj;


void adiciona (Funcionario f) {
for (int i=0; i<this.empregados.length; i++) {
     if (empregados[i] == null) {
     this.empregados[i]=f;
     }else{
     continue;
     }
     }
     }

      void mostraEmpregados() {
        for (int i = 0; i< this.empregados.length; i++) {
         System.out.println("Funcionário na posição" + i);
         System.out.println("R$" + this.empregados[i].salario);
         }
     } 

  }

  class TestaEmpresa{

public static void main (String[]args){
  Empresa empresa = new Empresa();
  empresa.empregados = new Funcionario[2];

  Funcionario f1 = new Funcionario();
  f1.salario = 1000;
  empresa.adiciona(f1);

  Funcionario f2 = new Funcionario();
  f2.salario = 3000;
  empresa.adiciona(f2);

  empresa.empregados[0].mostra();    
  empresa.empregados[1].mostra();

  empresa.mostraEmpregados();



}

}



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 Funcionaria {

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


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

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

void mostra() {
System.out.println("Nome:" + this.nome);
System.out.println("Departamento:"+this.departamento);
System.out.println("Salario:"+this.salario);
System.out.println("dataDeEntrada:"+this.dataDeEntrada);
System.out.println("RG"+this.rg);
System.out.println("Ganho Anual"+this.calculaGanhoAnual());
System.out.println("Dia: " + this.dataDeEntrada.dia);
System.out.println("Mês: " + this.dataDeEntrada.mes);
System.out.println("Ano: " + this.dataDeEntrada.ano);
System.out.println("Data de entrada: " + this.dataDeEntrada.getFormatada());


}


    }

    class TestaFuncionaria{

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

   f1.nome = "Marcia";
   f1.departamento = "administrativo";
   f1.salario = 1500;
   f1.rg = "12335";
   f1.recebeAumento (250);

   //adicionando a data como tipo
   f1.dataDeEntrada = new Data();
   f1.dataDeEntrada.preencheData(13, 5,2014);
   f1.mostra();


System.out.println("Salário atual:" + f1.salario);
System.out.println("Ganho Anual:" + f1.calculaGanhoAnual());

  Funcionaria f2=f1;

if (f1 == f2) {
            System.out.println("iguais");
        } else {
            System.out.println("diferentes");        
        }


    }

}
2 respostas
solução!

Ola, Thiago!

O Erro que vc esta recebendo é um: nullPointerException.

Você precisa inicializar esse cara aqui:

dataDeEntrada

Na sua classe TestaEmpresa no metodo main, ajuste como abaixo:

        Funcionaria f1 = new Funcionaria();
        Data dataFuncionario1 = new Data();
        f1.salario = 1000;
        f1.dataDeEntrada = dataFuncionario1;
        empresa.adiciona(f1);

        Funcionaria f2 = new Funcionaria();
        Data dataFuncionario2 = new Data();
        f2.dataDeEntrada = dataFuncionario2;
        f2.salario = 3000;
        empresa.adiciona(f2);

Deu Certo? entendeu o por que estava dando erro ?

Abraço!

Muito Obrigado!!!