Array string

Estou fazendo um exercício, mas estou travado em um erro que provavelmente é bem bobo, no entanto não consigo sair dele.
O código é esse abaixo:

import java.util.Scanner;
public class nivel3 {
	

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		System.out.println("Quantos alunos serão registrador?");
		int alunos = scan.nextInt();
		
		String[] nome = new String[alunos];
		
		int matricula[] = new int[alunos];
		
		String curso[] = new String[alunos];
		
		String disciplinas[][] = new String[alunos][2];
		
		int nota1[][] = new int[alunos][2];
		
		int nota2[][] = new int[alunos][2];
		
		double media[][] = new double[alunos][2];
		
		
		for (int i = 0; i < alunos; i++) {
			System.out.println("Qual o nome do aluno: ");
			nome[alunos] = scan.next();
			
			System.out.println("Qual a sua matricula: ");
			matricula[alunos] = scan.nextInt();
			
			System.out.println("Qual o seu curso");
			curso[alunos] = scan.next();
			
			for (int j = 0; j < 2; j++) {
				System.out.println("Quais são suas disciplinas cursadas");
				disciplinas[alunos][j] = scan.next();
				
				System.out.println("Quanto foi sua nota n1");
				nota1[alunos][j] = scan.nextInt();
				
				System.out.println("Quanto foi sua nota n2");
				nota2[alunos][j] = scan.nextInt();
				
				media[alunos][j] = (nota1[alunos][j] * nota2[alunos][j]) / 2;
				
			}
			
		}

Quando eu fui executar pela primeira vez pensei estar tudo certo, mas teve um erro na primeira etapa do “for”, eu n estou entendendo o que é, o erro é este abaixo:

Quantos alunos serão registrador?
2
Qual o nome do aluno: 
Pedro
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
	at nivel3.main(nivel3.java:22)

Por favor alguém me explica o que está errado.

Em vez de: nome[alunos] = scan.next();, não deveria ser: nome[i] = scan.next(); ?

Na sua execução, o valor de alunos é 2, que vc usa para inicializar o array de nomes para ter 2 valores, com isso, vc soh pode armazenar nomes nas posições 0 e 1.

1 curtida

“alunos” vai ser o número de posições do meus vetores e o tanto de linhas das minhas matrizes.
O valor “2” eu que escolhi poderia ser qualquer valor.
Quando é iniciado é perguntado quantos alunos serão registrados, o valor digitado vai definir o tamanho do “for”.

Sim, por isso seu código está dando erro nessa linha: nome[alunos] = scan.next();. Não existe a posição 2 no seu array de nomes, somente as posições 0 e 1.

1 curtida

aaaaaaaaaaaaa agora eu entendi o que você estava dizendo meu deus kkkkk, era muito simples.
Muito obrigado cara, ajudou bastante

1 curtida