Utilizar variável fora do escopo em Java

Olá! Estou atualmente estudando estrutura de dados (pilha especificamente) e estou fazendo um programa que lê algumas notas de alunos e então os coloca em duas pilhas diferentes: aprovado ou reprovado. No final, eu tenho que desempilhar isso e mostrar todos os alunos, dizendo seus nomes, suas médias e se foram reprovados e aprovados.

package com.faculdade.estruturaDaPilha.pilha;

import java.util.Scanner;

public class Exer02 {

	public static void main(String[] args) {

		Pilha<Integer> aprovados = new Pilha<Integer>();
		Pilha<Integer> reprovados = new Pilha<Integer>();

		Scanner scan = new Scanner(System.in);

		String[] aluno = new String[3];
		double[][] notas = new double[3][3];
		int soma = 0, media;
		int contAlunos = 0, contNotas = 0;
		// Obtém Nome e Notas
		do {
			System.out.print("\nNome: ");
			aluno[contAlunos] = new Scanner(System.in).nextLine();
			while (contNotas < 3) {
				System.out.print("Nota " + (contNotas + 1) + ": ");
				notas[contAlunos][contNotas] = new Scanner(System.in).nextDouble();
				contNotas++;
			}
			contNotas = 0;
			contAlunos++;
		} while (contAlunos < aluno.length);
		// Mostra Relatório
		for (int i = 0; i < aluno.length; i++) {
			System.out.println("\nAluno: " + aluno[i]);
			while (contNotas < 3) {
				System.out.println("Notas: " + notas[i][contNotas]);
				soma += notas[i][contNotas];
				contNotas++;
			}
			media = soma / 3;
			System.out.println("Média: " + media);
			contNotas = 0;
			soma = 0;

			if (media > 60) {
				System.out.printf("o aluno %s foi aprovado com a média  %d", aluno[i], media);
				aprovados.empilha(media);
			} else {
				System.out.printf("o aluno %s foi reprovado com a média  %d", aluno[i], media);
				reprovados.empilha(media);
			}
		}
			System.out.println("Desempilhando todos os aprovados ");

			while (!aprovados.estaVazia()) {
				System.out.println("Desempilhando aprovados: " + aprovados.desempilha());
			}

			System.out.println("Desempilhando todos os reprovados");

			while (!reprovados.estaVazia()) {
				System.out.println("Desempilhando reprovados: " + reprovados.desempilha());
			}
		}

	}

O código está funcionando corretamente até certo ponto, pois no final, onde diz “desempilhando todos os aprovados”, eu preciso reutilizar o “aluno[i]” para mostrar o nome dos alunos e suas médias respectivamente como se fosse uma lista de aprovados e reprovados, porém não consigo pensar em como fazer isso…

Acho que as pilhas deveriam ser de Alunos, não de Integers.

vou fazer outro post mais elaborado, refatorei o código um pouco pra melhorar a legibilidade pra quem quiser ajudar