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--;
}
}
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
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();
}