Erro ao tentar tratar InputMismatchException

Boa noite. Tenho que fazer um programa onde pego as notas de um alino e calcula suas médias.
Quanto tento fazer uma validação do dado de entrada estou tento um loop infinito. Ao se colocar qualquer caracter que não seja um numero, entro num loop infinito.
Alguem pra me dar uma luz?

import java.util.Scanner;
import java.util.InputMismatchException;

public class Media{
		
	static void le_notas(double[]notas){
		Scanner scan = new Scanner( System.in );
		for (int i=0; i<4; i++){
			boolean erro = true;
			while(erro == true){
				System.out.print("\nDigite a " +(i+1)+" nota do aluno: ");
				try{
					notas[i] = scan.nextDouble();
					if ((notas[i] / notas[i]) == (1)){
						erro = false;
					}
				}
				catch(InputMismatchException ex){
					System.out.print("\nERRO. Digite apenas numeros.\n ");
					erro = true;
				}
			}
		}	
	}

	static void calcula_media(double[]notas){
		double media = 0;
		for (int i = 0; i<4; i++){
			media = media + notas[i];
		}
		media = media/4;
		if (media >= 7.0){
			System.out.println(""); 
			System.out.printf("APROVADO!\n");
		}
		else  if (media >= 4.0 && media < 7.0){
			System.out.println("");
			System.out.printf("EM FINAL!\n");
			media = 10.0 - media;
			System.out.printf("VOCE PRECISA TIRAR " +media+ " PARA SER APROVADO NA FINAL!\n");
		}
		else if (media < 4.0){ 
			System.out.println("");
			System.out.printf("REPROVADO!.\n");
		}
	}	
	public static void main(String[] args){
		double[]notas = new double[4];
		double media = 0;
		le_notas(notas);
		calcula_media(notas);
	}
}

Olá,

Por alto, parece que o problema está quando você configura erro com true quando ocorre uma excessão. A cada iteração posterior ao bloco catch, a condição sempre será verdadeira.

[]'s

Quando a Exception é lançada o Scanner esta sendo fechada. Isto acontece automaticamente.
Para corrigir este erro, inicialize o Scanner dentro do bloco while na primeira linha.

[code]public class Media{

static void le_notas(double[]notas){  
 
    for (int i=0; i<4; i++){  
        boolean erro = true;  
        while(erro == true){  
        	Scanner scan = new Scanner(System.in); 
            System.out.print("\nDigite a " +(i+1)+" nota do aluno: ");  
            try{  [/code]