Estou com ArrayIndexOutOfBoundsException nao consigo localizar alguem poderia me ajudar

2 respostas
L

package Principal;
import java.util.Scanner;

import Principal.QuickSort;

import java.util.InputMismatchException;

import java.util.Scanner;

public class Principal {

private static Scanner scan = new Scanner(System.in);
public static void main(String args[]){

int vector[]=new int[10] ;

int i;
for(i=0;i<10;i++)
{
	System.out.println("Informe o Valor desejado");
	
	vector[i]=scan.nextInt();
	
}

 try {
 QuickSort.quicksort(vector,0,i);
 
 }catch(ArrayIndexOutOfBoundsException ex)
	{
		System.out.print("Erro");
		
	}

}

}

Funçao

package Principal;

public class QuickSort {

public static  void quicksort(int organizador[],int esquerdo,int direito){

int num=organizador [(esquerdo + direito)/2], num2, cont=esquerdo;

int aux=direito;
do
	{
		while(organizador[cont]<num && cont< direito)
			cont++;
	try {
		
	
		while(num<organizador[aux] && aux>esquerdo)
			aux--;
	}catch(ArrayIndexOutOfBoundsException ex)
	{
		System.out.print("Erro");
		
	}
		if (cont<=aux)
		{
		  num2 = organizador[cont];
		  
		  organizador[cont] = organizador[aux];
		  organizador[aux] = num2;
		  cont++;
		  aux--;
		  
		}
				
	}while (cont<=aux);
	if(esquerdo <aux)
		quicksort(organizador,esquerdo,aux);
	if(cont< direito)
		quicksort(organizador,cont,direito);
}

}

2 Respostas

marcosharbs

debuguei seu codigo
o erro está aqui:

if (cont <= aux) {
				num2 = organizador[cont];

				organizador[cont] = organizador[aux];
				organizador[aux] = num2;
				cont++;
				aux--;

			}

o valor da variável aux que vc usa como indice é 10, mas o vetor denominado organizador não possui a posição 10, ele possui 10 elementos e seus índices vão de 0 até 9 e vc está tentando buscar o indice 10 desse vetor que não existe, por isso o erro.

L

muito obrigado

Criado 20 de novembro de 2008
Ultima resposta 20 de nov. de 2008
Respostas 2
Participantes 2