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

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

Arrays tem sido a parte mais difícil do curso até o momento, eu não sabia exatamente o que fazer então recorri a resposta do exercício e dei um "paste". O prompt aponta que não reconhece o ponto (" . ") na linha:

for (int i = 0; i < this.livre; i++)

na class EMPRESA no métdo mostraTodasAsInformações(). Não entendi o por que deste LIVRE ele substitui o LENGTH? O código ficou assim:

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); } }

void mostraTodasAsInformacoes() { for (int i = 0; i < this.livre; i++) { System.out.println("Funcionário na posição: " + i); this.empregados[i].mostra(); } }

}

class TestaEmpresa{

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

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

Funcionario f2 = new Funcionario(); Data dataFuncionario2 = new Data(); f2.dataDeEntrada = dataFuncionario2; 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 Funcionario {

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

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

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());

Funcionario f2=f1;

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

}

}

2 respostas
solução!

Thiago,

Respondendo sua pergunta: "Não entendi o por que deste LIVRE ele substitui o LENGTH?"

Podemos considerar que nesse caso sim, porque, em um certo Exercício de Array foi pedido para criar um método "Adiciona" que adiciona um "funcionário" no vetor(Array) da classe "Empresa".

Só que para adicionar um Funcionario no vetor devemos inserir ele na ultima posição livre do vetor, devido a isso foi criado essa variável "Livre", pois ela vai conter a ultima posição do vetor.

Abaixo o método:

void adiciona(Funcionario i) {

this.operador[this.livre] = i;

this.livre++; <----

}

Oque houve foi um reaproveitamento da variável ao invés de colocarmos .Length colocamos a variável "Livre" pois o valor dela já contém o tamanho do vetor.

Espero ter Ajudado

obrigado Coddera!