Java.lang.ArrayIndexOutOfBoundsException: 50

2 respostas
M
public class lista8_3 {

public static void main (String args[]) {

//VARIAVEIS

int[] vetor = new int[50];

int i=0;

int v=0;

int igual=0;

int dif=0;

int difV=0;

int igualV=0;
//VALORES ALEATORIOS
for (i=0;i<=vetor.length;i++) {
  vetor[i]=(int)(Math.random()*50);
}


//VERICACAO DE ELEMENTOS
for (i=0;i<=vetor.length;i++){
  v = vetor[i];
  for (i=0;i<=vetor.length;i++) {
    if ( vetor[i] == v ) {
      igual++;
    } 
    if (vetor[i] != v ) {
      dif++;
    }
  }
  if (dif == 0 ) {
    difV++;
  }
  if (igual != 0) {
    igualV++;
  }
}
}

}

java.lang.ArrayIndexOutOfBoundsException: 50

at lista8_3.main(lista8_3.java:14)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

estou aprendendo java no momento e eu não faço a a menor ideia do que esta causando este erro, alguem poderia me ajudar?

2 Respostas

J

ArrayIndexOutOfBoundsException geralmente quer dizer que esta tentando acessar uma posição do array que não existe.
Repara no seus laços for

for (i=0;i<=vetor.length;i++) {
  vetor[i]=(int)(Math.random()*50);
}

vetor.length retorna a quantidade de posição do vetor, a variável i esta iniciando em 0
o sinal

<=

faz o for percorrer 51 posições e o certo seria 50

for (i = 0; i < vetor.length;i++) {

}

Arrumando os for o código compila normalmente

Jubinha

Maiquel_Bald,

Pelo que eu entendi do seu código fonte, a sua ideia é computar a igualdade e/ou diferença dos elementos no vetor. Eis abaixo, um fonte que fiz baseado no seu fonte:

public class testeLista {

public static void main (String args[]) {
//declaração das VARIAVEIS

int[] vetor = new int[50];

int igual=0;  int dif=0;

//int difV=0;   int igualV=0; int v = 0
// setando a matriz com valores aleatórios
  for( int i = 0; i <= vetor.length-1; i++ ){
  	  vetor[i]=(int)(Math.random()*50);
  }	
  
  /* 
   * verificando a igualdade ou não dos valores aleatórios 
   * no vetor setado anteriormente.
  */
  
  for ( int i = 0; i <= vetor.length-1; i++ ){

         for (int j = i+1 ; j <= vetor.length-1; j++){
	 
	               if ( vetor[j] == vetor[i]) {  igual++;  }
        	else if ( vetor[j] != vetor[i]) {   dif++;   } 	 	  	  
            } 
      }

  // Exibe a quantidade de elementos iguais e/ou diferentes encontrados no vetor. 
  if (igual == 0) System.out.println("Quantidade de elementos diferentes :" + dif); 
  if (dif == 0)   System.out.println("Quantidade de elementos iguais :" + igual);  	  
 }

}

Criado 27 de abril de 2016
Ultima resposta 29 de abr. de 2016
Respostas 2
Participantes 3