Ajuda aqui com calculo de média- RESOLVIDO

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.

[code]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??
[/code]

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

6 != 16

Tome cuidado e sempre revise seu código.

[quote=entanglement][quote]
double media[]=new double[6];
[/quote]

6 != 16

Tome cuidado e sempre revise seu código. [/quote]

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.

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.

Resolvi

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

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?

[quote=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?[/quote]

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.