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