Erro ao exibir média de notas em um array

A questão pede para ler quatro notas, e mostrar a média na tela. Criei uma variável para armazenar o array notas sendo que dentro do laço for a variável soma armazenaria a soma das notas enquanto a variavel do tipo inteiro d somaria a quantidade de notas e fora do laço a variavel média armazenaria o resultado da soma das notas dividido por d.
No entanto, o programa exibe um erro na parte que deveria fazer o calculo da média.
Segue o código…

package listadexercicios;

import java.util.Scanner;

/*
Faça um Programa que leia 4 notas, mostre as notas e a média na tela

*/
public class Questao28 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		double[] n = new double[4];
		double soma = 0, media = 0;
		int d = 0;
		for (int c = 1; c <= n.length; c++) {
			System.out.println("Informe a " + c + "º  nota:");
			n[c] = input.nextDouble();
			soma = soma + n[c];
			d = d + 1;
		}
		media = soma / d;
		System.out.println("A média é : " + media);
	}

}

Informe a 1º  nota:
8,5
Informe a 2º  nota:
9,5
Informe a 3º  nota:
7,5
Informe a 4º  nota:
6,5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
	at listadexercicios.Questao28.main(Questao28.java:17)

Alguem poderia me ajudar, estou tendo um pouco de dificuldade em assimilar arrays.

Você está ultrapassando o tamanho do array, você declarou um array de 4 posições, e colocou o laço iniciando em 1.

Os arrays no Java iniciam em 0, não em 1, provavelmente por isso apresenta o erro!

Seu array tem 4 posições, sendo elas: 0, 1, 2 e 3.

Dessa forma, o contador do seu laço deveria iniciar em zero e ir até c < n.length.

for (int c = 0; c < n.length; c++) {
    …
}
1 curtida

@Jonathan_Medeiros muito obrigado pela explicação, realmente não tinha percebido isso. Estou apanhando um pouco de arrays mas vou continuar praticando .