Java.lang.arrayIndexOutOfBoundsExeption Erro!

2 respostas
V
em um dos vários exercícios q estou fazendo, esse aki  me dando dor de cabeça, na linha indicada ele da o erro <i>java.lang.arrayIndeOutOfBoundsExeption</i>:-W Da um help ae Galera :-]





P.S: Qnd eu retiro a função ordenar() ele funciona mas, claro, naum ordena a saida





import javax.swing.*;


import java.awt.Container;





public class numero06 extends JApplet {





	JTextArea ta;





	public void init(){





		int[] resultado = new int[13];





		for(int counter = 1; counter <= 36000; counter++)


			switch(rolar_dados()) {


				case 2:  resultado[2]++;break;


				case 3:  resultado[3]++;break;


				case 4:  resultado[4]++;break;


				case 5:  resultado[5]++;break;


				case 6:  resultado[6]++;break;


				case 7:  resultado[7]++;break;


				case 8:  resultado[8]++;break;


				case 9:  resultado[9]++;break;


				case 10: resultado[10]++;break;


				case 11: resultado[11]++;break;


				case 12: resultado[12]++;break;


			}





		ordena(resultado);





		String texto = "Valores da Soma de 2 dados rolados 36000 vezes\n\n";





		for(int counter = 2; counter < resultado.length; counter++)


			texto += "O Valor " + counter + " ocorreu " + resultado[counter] + " vezes.\n";





		Container c = getContentPane();


		ta = new JTextArea(15,30);


		ta.setText(texto);


		c.add(ta);


	}





	public int rolar_dados() {





		int valor1 = 1 + (int)(Math.random() * 6);


		int valor2 = 1 + (int)(Math.random() * 6);








		int soma = valor1 + valor2;





		return soma;


	}





	public void ordena(int[] vetor) {





		for(int counter = 2 ; counter < vetor.length ;counter++) {


			for(int counter2 = 2; counter2 < vetor.length - counter ; counter2++) {


				if(vetor[counter2] > vetor[counter2+1]) {


						troca(vetor,vetor[counter2],vetor[counter2 + 1]);


					}


				}





		}


	}





	public void troca(int[] v, int primeiro, int segundo) {





		int foo = v[primeiro];  // :-W Erro Aki! :-W





		v[primeiro] = v[segundo];


		v[segundo] = foo;


	}


}







[ Esta mensagem foi editada por: VictorjF em 12-04-2003 02:02 ]

2 Respostas

B

Substitua a linha

Code:
troca(vetor,vetor[counter2],vetor[counter2 + 1]); 



por

Code:
troca(vetor,counter2,counter2 + 1);





(Você estava passando o próprio elemento da array, um número gerado pelo random, como index, ao invés de passar o index)
V

Ae, Vlw msm… :slight_smile: :slight_smile: :slight_smile: :slight_smile: :slight_smile:

Criado 12 de abril de 2003
Ultima resposta 13 de abr. de 2003
Respostas 2
Participantes 2