Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Try/Catch e if

Quero que o programa não aceite números acima de 10. E quando der a exceção o programa não páre, quero que continue para colocar as notas. Do jeito que estou fazendo não está dando certo.

package br.com.exercicioweb;

import java.util.Scanner;

public class MediaAlunos {

public static void main(String[] args) {


    Scanner leitura = new Scanner(System.in);

    try {
        for (int i = 0; i < 5; i++) {

            System.out.println("Digite a primeira nota: ");
            double nota1 = leitura.nextDouble();

            System.out.println("Digite a segunda nota: ");
            double nota2 = leitura.nextDouble();

            System.out.println("Digite a terceira nota: ");
            double nota3 = leitura.nextDouble();

            System.out.println("Digite a quarta nota: ");
            double nota4 = leitura.nextDouble();

            double media = (nota1 + nota2 + nota3 + nota4) / 4;
            System.out.println("Nota: " + media);

            if (nota1 > 10 && nota2 > 10 && nota3 > 10 && nota4 > 10) {   // aqui deve ser a identação
                System.out.println("Digite uma nota entra 0 a 10!"); 
            }

            if (media > 6) {
                System.out.println("Aluno aprovado!");
            } else if (media < 6) {
                System.out.println("Aluno reprovado!");

            }

            break;

        }
    } catch (Exception e) {
        System.out.println("Caractere inválido, por favor, digite um número!");  
        //aqui tentei o continue, mas ele não aceita fora do loop
    }
    leitura.close();
}

}

3 respostas

Olá, Refiz seu código ficaria assim:

package br.com.exercicioweb;
import java.util.Scanner;


public class MediaAlunos {
    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        double somaNotas = 0;

        for (int i = 1; i <= 4; i++) {
            try {
                System.out.print("Digite a " + i + "ª nota: ");
                double nota = leitura.nextDouble();

                if (nota > 10) {
                    throw new IllegalArgumentException("Nota inválida! A nota não pode ser maior que 10.");
                }

                somaNotas += nota;
            } catch (Exception e) {
                System.out.println(e.getMessage());
                System.out.println("Por favor, insira um valor válido.");
                leitura.nextLine(); // Limpa o buffer do scanner para uma nova entrada
                i--; // Repetir a iteração atual para obter uma nota válida
            }
        }

        double media = somaNotas / 4;
        System.out.println("A média das notas é: " + media);

        if (media >= 6) {
            System.out.println("Aprovado!");
        } else {
            System.out.println("Reprovado!");
        }
        leitura.close();
    }
}

Dá uma olhada se é isso que você está buscando!

solução!

Oi Michel,

Sim, era isso que eu queria. Muito obrigada! :)

*Que bom *