java.lang.ArrayIndexOutOfBoundsException: 30 [Resolvido]

Boa noite, hoje tentando fazer um simples exercício de lógica com vetores. Começou a aparecer mensagem de erro ao executar o arquivo .class após a compilação.

O exercício é para obter um valor de peso para cada posição do vetor utilizando o método Random onde foi definido um valor entre 80 e 200 e após isso calcular a média desses valores obtidos e depois calcular quais vetores encontram-se com o valor de peso acima da media.

Quando vou executar aparece a seguinte msg:

"Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 30
at RandomEx.main(RandomEx.java:16) "

import java.util.Random;

public class RandomEx {

public static void main(String[] args) {

    Random rm = new Random();

    int vetor[] = new int[30];
    int peso = 0;
    int acima = 0;
    
    for (int i = 0; i <= vetor.length; i++) {
        vetor[i] = rm.nextInt(200 - 80) + 80;
        peso = (vetor[i] + peso);
    }

int mediaTotal = peso / vetor.length;
System.out.println("A media do peso é " + mediaTotal + "kg");

    for (int k = 0; k <= vetor.length; k++) {
          if (vetor[k] > mediaTotal) {
            acima = acima + 1;
        }
    }
    
  System.out.println("E existem " + acima + " lutadores com o peso acima da média");
}

}

O que devo fazer para resolver esse problema? :tired_face:

Você está acessando um espaço de memória no vetor que não existe, porque um vetor de 30 posições começa do 0 e vai até 29 posições.

ta assim:

for (int k = 0; k <= vetor.length; k++)

para isso:

for (int k = 0; k < vetor.length; k++)
1 curtida

puts cara, um negocio tão simples que não prestei atenção. Muito obrigado. :grin:

1 curtida