Ajudar com Soma de array

3 respostas
M

Bom dia
Tenho que percorrer o vetor de poderes e fazer a soma dos elementos e retonar o total deles

package superherois;

public class Personagem {

    String nome;
    private String nomeVidaReal;
    private Superpoder[] poderes = new Superpoder[4];
    int soma;

    void adicionaSuperpoder(Superpoder sp) {
        for (int i = 0; i < 4; i++) {
            poderes[i] = sp;
        }
    }

    int getPoderTotal() {
        for (int i = 0; i < 4; i++) {
            soma = poderes[i] + soma ;
        }

        return  soma;
             }

    public Personagem(String nome, String nomeVidaReal) {
        this.nome = nome;
        this.nomeVidaReal = nomeVidaReal;
    }

    
    
    
    
}

3 Respostas

JeanJavaMan

o erro está em soma na parte getPoderTotal(), vc está recebendo sempre os valores e não somando para somar vc alterar para a seguinte forma:

soma += poderes[i];

Outro ponto que eu observer e no adicionaSuperPoder() vc adicionar o mesmo poder para todo o array, ou sejá ele sempre terá apenas um poder a forma correta seria verificar onde está vázio e depois adicionar o poder lá ficando da seguinte forma:

void adicionaSuperpoder(Superpoder sp) {
    for (int i = 0; i < 4; i++) {
        if(poderes[i] == null){
           poderes[i] = sp;
            break; // para a execução do for
       }
    }
}

erá esse o seu problema?
outra observação vc pode usar o método length para saber o tamanho do array ficando assim:

for (int i = 0; i < poderes.length; i++) {
        if(poderes[i] == null){
           poderes[i] = sp;
            break; // para a execução do for
       }
    }
pmlm

O que ele tem é exatamente igual a isso. O problema é que cada vez que invocar o método getPoderTotal não está a limpar o valor anterior de soma, e o resultado vai ser sempre incrementando.

JeanJavaMan

Tem razão, como estou trabalhando li rapido e nem percebi :smile:

Criado 7 de dezembro de 2015
Ultima resposta 15 de dez. de 2015
Respostas 3
Participantes 3