Erro ArrayIndexOutOfBoundsException no meu programa

4 respostas
N

Boas pessoal queria so que me explicassem o porque deste erro:
“Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 10
at test.main(test.java:19)

o programa que fiz tem como objectivo de tirar a media e a moda(valor mais frequente do array) onde reside o meu problema, ele a media tira sem problemas, o prog é este:

public class test {
	public static void main(String[]args){
		Scanner kbd=new Scanner(System.in);
		double[] a=new double[10];
		double soma=0,media;
		
		for(int i=0;i<a.length;++i){
			a[i]=kbd.nextInt();
			soma=soma+a[i];
			
			}
		
		media=soma/10;	
		System.out.println("media:"+media);
		int j=0;
		
		do{
			if(a[j]==a[j+1])
				System.out.print("moda: "+(int)a[j]+"");
			j=j+1;
			
		}while(j><a.length);
	}

}

se me puderem ajudar agradecia.
Obrigado>

EDIT - (Moderador)

  1. Ponha um título mais descritivo que “Problema” ou “Help” ou “Socorro”.
  2. Use os tags [ code ] - há um botãozinho [ code ] bem na linha “Corpo da Mensagem”. Basta clicar uma vez antes de postar seu código, e uma vez depois.

4 Respostas

F

olá nasomet

primeiro vou te dar umas dicas sobre o forum..
coloca seu codigo dentro da tag code p/ melhor compreensão :)
e o título do tópico, coloque sempre algo mais objetivo.. :wink:

acho q o seu while tem algo errado, nao seria assim o seu codigo??

public class test {
		public static void main(String[]args){
			Scanner kbd=new Scanner(System.in);
			double[] a=new double[10];
			double soma=0,media;
	
			for(int i=0;i<a.length;++i){
				a[i]=kbd.nextInt();
				soma=soma+a[i];
		
			}
	
			media=soma/10;
			System.out.println("media:"+media);
			int j=0;
	
			do{
				if(a[j]==a[j+1])
					System.out.print("moda: "+(int)a[j]+"");
				j=j+1;
		
			}while(j >< a.length);
		}
	}
thiago.correa

No teu for

for(int i=0;i<a.length;++i){ 
a[i]=kbd.nextInt(); 
soma=soma+a[i]; 

}

use o operador de pós-incremento (i++) e não pré-incremento (++i)

for(int i=0;i<a.length;i++){ 
a[i]=kbd.nextInt(); 
soma=soma+a[i]; 

}
B

Linha 19:if(a[j]==a[j+1])

Você tenta compara o último valor com um depois do último.

peczenyj

java.lang.ArrayIndexOutOfBoundsException

Vc esta tentando acessar um indice alem do seu array, se vc declarou-o como tendo tamanho 10, ele vai de 0 a 9, tipicamente vc esta tendo um problema inesperado em alguma ponta da sua lógica :wink:

Verifique as bordas. Não é legal acessar o elemento 1024 de uma matriz que vai até 100 – aprendi isso duramente na prática :frowning:

Criado 4 de novembro de 2008
Ultima resposta 4 de nov. de 2008
Respostas 4
Participantes 5