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

expressão sem efeito em classe referenciada.

O programa compila perfeito. Entretanto o valor de resultado permanece zerado. Usei dentro da própria classe a seguinte expressão: resultado = pontos-advertencias;

class Empresa{

    String CNPJ;
    String nome;

    Funcionario[] funcionario;

    void analisaDados(){

        System.out.println("Nome da empresa: "+this.nome);
        System.out.println("CNPJ: "+ this.CNPJ);
        for(int i=0;i<funcionario.length;i++){
            if(funcionario[i]==null) continue;

            System.out.println("Nome: "+funcionario[i].nomeF+ "\n Pontos: " +funcionario[i].pontos+"\nAdvertências: "+ funcionario[i].advertencias);
            System.out.println("Resuldado: "+funcionario[i].resultado);

        }

    }

}


class Funcionario{

    String nomeF;    
    int pontos;
    int advertencias;

    int resultado = this.pontos-this.advertencias;    





}
class Arrays{

    public static void main(String[] args){
    Empresa escolaDH = new Empresa();
    escolaDH.nome = "\t\t\tEscola de heróis.\n \t\tUma escola de ética para crianças usando quadrinhos e desenhos animados \n\t\t     O que é ser um herói para você?";
    escolaDH.CNPJ = "616354";


    escolaDH.funcionario = new Funcionario[5];


    escolaDH.funcionario[0] = new Funcionario();    
    escolaDH.funcionario[0].nomeF = "Marcelo";
    escolaDH.funcionario[0].pontos = 50;
    escolaDH.funcionario[0].advertencias = 20;


    escolaDH.funcionario[2] = new Funcionario();    
    escolaDH.funcionario[2].nomeF = "Samanta";
    escolaDH.funcionario[2].pontos = 30;
    escolaDH.funcionario[2].advertencias = 20;


    escolaDH.funcionario[4] = new Funcionario();    
    escolaDH.funcionario[4].nomeF = "David";
    escolaDH.funcionario[4].pontos = 80;
    escolaDH.funcionario[4].advertencias = 47;

    escolaDH.analisaDados();


    }
}
2 respostas
solução!

O que acontece é que você atribui o valor à variável resultado no momento de sua declaração e não muda depois. Nesse momento as variáveis pontos e advertências estão com valores iguais a zero.

Essa é uma boa situação para usar método de acesso. Dentro dele você calcula a soma dos pontos e advertências.

public int getResultado() {
    return this.pontos - this.advertencias
}

Onde antes você lia o valor de resultado, agora você dever chamar o método getResultado(), que irá trazer o valor atualizado.

No blog da Caelum tem um post muito bom falando sobre métodos de acesso, quando usá-los ou não.

http://blog.caelum.com.br/nao-aprender-oo-getters-e-setters/

Obrigado, cara. Vc tem respondido todas as minhas dúvidas. Tem ajudado muito um cara que manja nada de POO.

Já li sobre get e set em Deitel pra c++, mas era possível fazer isso que fiz no c++. Valeu novamente.

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