Problema com arrays e media de alunos

Escreva um programa que pergunte ao usuário quantos alunos tem na sala dele.
Em seguida, através de um laço while, pede ao usuário para que entre com as notas de todos os alunos da sala, um por vez.
conseguir fazer com que o programa pergunte o numero de alunos, e depois faça você digitar cada nota dele(inicialmente não usei array), depois que fiz isso pensei em usar arrays para salvar as notas dos alunos, mas não estou sabendo utilizar para que o programa receba cada nota e salve no array.

import java.util.Scanner;
public class MediaAlunosWhile {
public static void main(String[] args) {
System.out.println(“Quantos alunos tem na classe?”);
Scanner sc1 = new Scanner(System.in);
int i = sc1.nextInt();

	int y=1;
	while(i>=y) {
		
		int[] x = new int[i];
		System.out.println("aluno");
		x[i] = sc1.nextInt();
		i--;
		
		
	}
}

}

Vc quer aviliação? Respostas? qual o problema?

eu sou novo nesse site e na programação
Só quero uma resposta de como eu faço para eu digitar cada nota e ela salvar no array

Põe essa declaração fora do while, desse jeito ele está sendo recriado a cada iteração.

fiz isso
e deu esse erro
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
at MediaAlunosWhile.main(MediaAlunosWhile.java:16)

acredito que ele esteja dizendo que está dando erro na linha 16 que é
x[i] = sc1.nextInt();

A exceção ArrayIndexOutOfBounds indica que você tentou acessar uma posição inexistente no Array.
No seu código, você está atribuindo à variávei i o número de alunos que o usuário digitou no programa

nesse caso, i era igual à 4.
Você tem que lembrar que as posições de um Array começam sendo contadas do zero, ou seja, a ultima posição de um Array com 4 posições é 3.

Array com 4 posições
[ 0 ][ 1 ][ 2 ][ 3 ] <-- A ultima posição é 3

Você recebeu esse erro por tentar acessar a posição 4, e ela não existe nesse Array

1 curtida

Mexendo com arrays, é mais comum usar um for do que um while, veja:

Scanner sc1 = new Scanner(System.in);

System.out.println(“Quantos alunos tem na classe?”);
int tamanho = sc1.nextInt(); //tamanho é um nome mais descritivo que i
int[] notas = new int[tamanho];

//iterando de 0 até a última posição do array
for (int i = 0; i < notas.length; i++) {
    System.out.println("Digite uma nota:");
    notas[i] = sc1.nextInt();
}
1 curtida

ah sim
entendi
muito obrigado

deu certo
obrigado