7
respostas

Dúvida no método adiciona

fiquei com duvida no uso do método adiciona

void adiciona(funcionario f){ this.func[this.livre] =f; this.livre++; }

7 respostas

Oi Antonio,

Qual é sua dúvida? Pq a implementação parece ok :)

no caso ele vai adicionar o funcionario na posição livre e somar mais um passando para a próxima posição é isso, precisava ver um exemplo completo com as classes e o método pq o q tentei fazer nao rodou =(

Você pode baixar os códigos daqui => https://github.com/alura-cursos/moderadores/tree/master/Trilha%20-%20Java/Java%20I%20-%20Primeiros%20passos

Antonio, seria exatamente isso, você sempre terá seu sua classe a posição que esta livre no momento:

public class Array {
    private int posicaoLivre = 0;
}

Então nó método adiciona basta adicionar sempre um elemento nessa posição e após adicionar incrementa-la:

public void adiciona(Object obj) {
    this.objs[this.posicaoLivre] = obj;
    this.posicaoLibre++;
}

Feito isso a posição livre agora sera = 1 pois ja possuímos um objeto na posição, e quando adicionar um objeto na posição 1 ela será 2 e assim sucessivamente....

Caso ainda tenha dúvidas em meu blog tenho um post que explico o funcionamento de um ArrayList onde o método adiciona faz exatamente isso: http://blog.matheuscastiglioni.com.br/Imitando-ArrayList

Espero ter ajudado.

Muito obrigado Alberto e Matheus agora sim entendi exatamente o que o método faz...

Joguei esse codigo no NetBeans e ele instanciou perfeitamente a classe porem o ultimo método empresa1.mostraFun(); nao funciona, nao aparecem os System.out.println, alguem sabe me explicar porque

segue o codigo abaixo

class Empresa{
String nomeEmp;
int cnpjEmp;
int livre=0;
Funcionario[] empregado;

void adiciona(Funcionario f){
this.empregado[this.livre]=f;
this.livre++;
}
void mostraFun(){
for (int count=0;count>=empregado.length;count++){
System.out.println("Funcionario da posição"+count);
System.out.println("Nome do funcionario posiçao"+count+"é"+this.empregado[count].nomeFun);
System.out.println("Rg do funcionario da posiçao"+count+"é"+this.empregado[count].rgFun);
System.out.println("Salario do empregado da posiçao"+count+"é"+this.empregado[count].salFun);
}}}
class Funcionario{
String nomeFun;
int rgFun;
double salFun;
}
class TestaEmpresa{
    public static void main(String[] args){

Empresa empresa1 = new Empresa();
empresa1.nomeEmp = "Matrix Solutions";
empresa1.cnpjEmp = 51452;
empresa1.empregado = new Funcionario[5];

Funcionario fun1 = new Funcionario();
fun1.nomeFun = "Marcelo Gadioli";
fun1.rgFun = 45878754;
fun1.salFun = 3200.0;
empresa1.adiciona(fun1);


Funcionario fun2 = new Funcionario();
fun2.nomeFun = "Felipe Basso";
fun2.rgFun = 475841;
fun2.salFun = 2300.0;
empresa1.adiciona(fun2);
empresa1.mostraFun();


        }}

int count=0;count>=empregado.length;count++

O cont aqui tem que ser menor :).

Ahhh blza agora rodou perfeitamente, obrigado =DD

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