Ajuda aqui com calculo de média- RESOLVIDO

7 respostas
E

E ae galera, blz?
Então...to querendo calcular as médias de alguns elementos de uma matriz de 16x7 do tipo string.

A matriz dados que esta sendo passada por parâmetro tem na coluna 0 nomes, portanto exclui ela no código pois só quero os valores das outras colunas.

public class desviopadrao {
    public static double[] chamadesvio(String[][] dados){
        
        double media[]=new double[6];
        double total = 0;
        int x;

        for(x=1;x<7;x++){
                total=total+Double.parseDouble(dados[0][x]);
                total=total+Double.parseDouble(dados[1][x]);
                total=total+Double.parseDouble(dados[2][x]);
                total=total+Double.parseDouble(dados[3][x]);
                total=total+Double.parseDouble(dados[4][x]);
                total=total+Double.parseDouble(dados[5][x]);
                total=total+Double.parseDouble(dados[6][x]);
                total=total+Double.parseDouble(dados[7][x]);
                total=total+Double.parseDouble(dados[8][x]);
                total=total+Double.parseDouble(dados[9][x]);
                total=total+Double.parseDouble(dados[10][x]);
                total=total+Double.parseDouble(dados[11][x]);
                total=total+Double.parseDouble(dados[12][x]);
                total=total+Double.parseDouble(dados[13][x]);
                total=total+Double.parseDouble(dados[14][x]);
                total=total+Double.parseDouble(dados[15][x]);
                
                media[x]=total/16;
        }
        return media;
    }

}

O problema é que esta dando estes erros qdo executo o programa no net beans.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at desviopadrao.chamadesvio(desviopadrao.java:9)
Java Result: 1

e estes aqui qdo executo pelo prompt 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
        at desviopadrao.chamadesvio(desviopadrao.java:26)
Java Result: 1

Vcs podem me ajudar??

7 Respostas

luizalbsilva

Sua matrix media vai de 0 a 5, não de 1 a 6, como definido no seu for

E

6 != 16

Tome cuidado e sempre revise seu código.

E

entanglement:

double media[]=new double[6];

6 != 16

Tome cuidado e sempre revise seu código.

Mas acontece que é pra calcular a média de cada uma das colunas.

Ai o vetor media tem que ter 6 posições para receber a media dos valores de cada coluna.

E

como expliquei no tópico.

a matriz é do tipo string, a primeira coluna dela é de nomes e as restantes de números.

por isso coloquei de 1 a 6 e não de 0 a 5, pq se fizesse de 0 a 5, daria erro pq a coluna 0 é de nomes.

E

Resolvi

Tive que por o vetor media com 7 posições e sempre zerar o total qdo iniciar o for novamente.

luizalbsilva

Acho que você não compreendeu… você definiu sua media assim:

double media[]=new double[6];

TODA matriz em java começa com 0 e termina com tamanho -1.

ou seja, no seu loop, vc deveria colocar:

media[x-1]=total/16;

Assim, os elementos começariam a ser gravados de 0 e terminando em 5. Caso contrário, precisa mudar sua definicão da sua variável para ter 7 elementos, usando:

double media[]=new double[7];

Assim, a matriz media iniciaria em 0 e terminaria em 6, compreendeu?

E

luizalbsilva:
Acho que você não compreendeu… você definiu sua media assim:

double media[]=new double[6];

TODA matriz em java começa com 0 e termina com tamanho -1.

ou seja, no seu loop, vc deveria colocar:

media[x-1]=total/16;

Assim, os elementos começariam a ser gravados de 0 e terminando em 5. Caso contrário, precisa mudar sua definicão da sua variável para ter 7 elementos, usando:

double media[]=new double[7];

Assim, a matriz media iniciaria em 0 e terminaria em 6, compreendeu?

eu tinha percebido que precisaria mudar o tamanho do vetor para 7, mas não tinha percebido essa outra solução que vc propôs.
mto obrigado luiza.

Criado 29 de maio de 2010
Ultima resposta 29 de mai. de 2010
Respostas 7
Participantes 3