Duvida java

Estou com dificuldades nesse programa, pois nao sei a onde esta o erro. Ele aparece esses erros:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
	at senacti.com.ExercicioMedia.main(ExercicioMedia.java:22)

Segue o programa:

package senacti.com;

import java.util.Scanner;

public class ExercicioMedia {

	public static void main(String[] args) {
		Scanner ler = new Scanner(System.in);
		int n = 4;		
		double n1[]  = new double [n];
		double n2[]  = new double [n];
		double n3[]  = new double [n];
		double matricula[]  = new double [n];
		double media[] =new double [n];
		String nome[]   = new String [n];
		int y;
		
		for(y = 0; y < n; y++); {
			System.out.println("Informe o nome do aulo : ");
			nome[y] = ler.nextLine();
		
			System.out.println("Informe a Matricula: ");
			matricula[y] = ler.nextDouble();

			System.out.println("Digite a primeira nota:");
			n1[y] = ler.nextDouble();

			System.out.println("Digite a segunda nota:");
			n2[y] = ler.nextDouble();

			System.out.println("Digite a terceira nota:");
			n3[y] = ler.nextDouble();
		
			media[y] = (n1[y] + n2[y]+ n3[y]) / 3;
		}
		
		for( y= 0; y< n; y++); {
			if (media[y] > 60)
				System.out.println(nome[y]+": Esta  Aprovado com a média é: "+media[y]+" pontos.");
		
			if (media[y] < 40) 
				System.out.println(nome[y]+": Esta reprovado, sua media é: "+media[y]+" pontos. ");
			else 
				if (media[y]  >= 40 && media[y] <=60) 
					System.out.println(nome[y]+": Esta de recupereção com a média é: "+media[y]+" pontos.");
		}
	}
}

Sem testar seu código, só olhando rapidamente, vi 2 erros, um em cada for que vc criou, que é aquele ponto e virgula.

Ao invés de fazer isso (com o ponto e virgula antes da chave):

for( y= 0; y< n; y++); {

Faça isso (SEM o ponto e virgula antes da chave):

for( y= 0; y< n; y++) {

Aproveitando a oportunidade‚Ķ √Č uma pratica ruim declarar a variavel de controle do for fora dele, √© melhor declarar esta variavel no proprio for para evitar confus√£o.

Então, ao invés de fazer isso:

int y;
for(y = 0; y < n; y++) { /* ... */ }
for(y = 0; y < n; y++) { /* ... */ }

√Č melhor fazer isso:

for(int y = 0; y < n; y++) { /* ... */ }
for(int y = 0; y < n; y++) { /* ... */ }
2 curtidas

Obrigado vou tentar arruma

1 curtida