Dúvida exercício media Aluno (if else para switch case)

Pessoal:
Sou iniciante no Java, e tenho muita dificuldade com programação.
Estou resolvendo uma série de exercícios e em alguns momentos percebi que o switch case deixou o meu código mais “enxuto”. Meu problema é que não consegui alterar esse exercício para utilizar o switch case ao invés do If-else. Segue o enunciado e a minha resposta.

"Escrever um algoritmo que lê o número de identificação, as 3 notas obtidas por um aluno nas 3 verificações e a média dos exercícios que fazem parte da avaliação. Calcular a média de aproveitamento, usando a fórmula:
MA = (Nota1 + Nota2 x 2 + Nota3 x 3 + ME )/7
A atribuição de conceitos obedece a tabela abaixo:

Média de Aproveitamento Conceito
9,0 A
7,5 e < 9,0 B
6,0 e < 7,5 C
4,0 e < 6,0 D
< 4,0 E

O algoritmo deve escrever o número do aluno, suas notas, a média dos exercícios, a média de aproveitamento, o conceito correspondente e a mensagem: APROVADO se o conceito for A,B ou C e REPROVADO se o conceito for D ou E.

package lista2;

import javax.swing.JOptionPane;

public class Exercicio10 {

public static void main(String[] args) {

	int codigoAluno;
	double nota1, nota2, nota3, mediaExercicios, mediaAproveitamento;
	String conceito;
	
	codigoAluno = Integer.parseInt(JOptionPane.showInputDialog("Informe a matrícula do aluno: "));
	nota1 =  Double.parseDouble(JOptionPane.showInputDialog("Informa a primeira nota do aluno: "));
	nota2 =  Double.parseDouble(JOptionPane.showInputDialog("Informa a primeira nota do aluno: "));
	nota3 =  Double.parseDouble(JOptionPane.showInputDialog("Informa a primeira nota do aluno: "));
	mediaExercicios = (nota1 + nota2 + nota3)/3;
	
	mediaAproveitamento = (nota1 + (nota2*2) + (nota3*3) + mediaExercicios)/7;
	
	if (mediaAproveitamento >= 9.0) {
		conceito = "A";
		JOptionPane.showMessageDialog(null, "O código do aluno é: " + codigoAluno + "\n"
				+ "As notas do aluno foram: " + nota1 + " ," + nota2 + " ," + nota3 +  "\n"
				+ " A média de exercícios foi de: " + mediaExercicios +  "\n"
				+ "A média de Aproveitamento é: " + conceito + " \n"
				+ "O Aluno está aprovado.");				
		
	}else if (mediaAproveitamento >= 7.5 && mediaAproveitamento < 9.0) {
		conceito = "B";
		JOptionPane.showMessageDialog(null, "O código do aluno é: " + codigoAluno + "\n"
				+ "As notas do aluno foram: " + nota1 + " ," + nota2 + " ," + nota3 +  "\n"
				+ " A média de exercícios foi de: " + mediaExercicios +  "\n"
				+ "A média de Aproveitamento é: " + conceito + " \n"
				+ "O Aluno está aprovado.");
	}else if (mediaAproveitamento >= 6.0 && mediaAproveitamento < 7.5) {
		conceito = "C";
		JOptionPane.showMessageDialog(null, "O código do aluno é: " + codigoAluno + "\n"
				+ "As notas do aluno foram: " + nota1 + " ," + nota2 + " ," + nota3 +  "\n"
				+ " A média de exercícios foi de: " + mediaExercicios +  "\n"
				+ "A média de Aproveitamento é: " + conceito + " \n"
				+ "O Aluno está aprovado.");

	}else if (mediaAproveitamento >= 4.0 && mediaAproveitamento < 6.0) {
		conceito = "D";
		JOptionPane.showMessageDialog(null, "O código do aluno é: " + codigoAluno + "\n"
				+ "As notas do aluno foram: " + nota1 + " ," + nota2 + " ," + nota3 +  "\n"
				+ " A média de exercícios foi de: " + mediaExercicios +  "\n"
				+ "A média de Aproveitamento é: " + conceito + " \n"
				+ "O Aluno está reprovado.");

	}else if(mediaAproveitamento < 4.0 && mediaAproveitamento >=0 ) {
		conceito = "E";
		JOptionPane.showMessageDialog(null, "O código do aluno é: " + codigoAluno + "\n"
				+ "As notas do aluno foram: " + nota1 + " ," + nota2 + " ," + nota3 +  "\n"
				+ " A média de exercícios foi de: " + mediaExercicios +  "\n"
				+ "A média de Aproveitamento é: " + conceito + " \n"
				+ "O Aluno está reprovado.");
	}	
}

}

OBS: Minha resposta inicial foi uma tripa de IF-Elses maior, mas depois consegui diminuir e deixei dessa forma que postei.

Nesse caso é possível utilizar o switch-case? Pergunto pois nesse exercício não consegui =(
Obrigada.

OBS2: esses exercícios estou fazendo por conta própria…não é trabalho que eu tenho que entregar pra ninguém não!

O switch do Java não opera sobre intervalos, somente sobre constantes.
E no seu caso você tem intervalos de notas:

>= 9
>= 7,5
>= 6
>= 4
1 curtida

Obrigada :wink: !!

Disponha, inclusive você pode tirar o operador && dos seus if pois por exemplo:

if (media >= 9) {
    /* Conceito A */
} else if (media >= 7,5) {
    // no if anterior ja verificou se é >= 9
    // se caiu aqui, obviamente é < 9
    // então não precisa por && < 9
}
1 curtida

Valeu staroski!
Obrigada mesmo! Eu ainda não tenho essas sacadas :smiley:

1 curtida

Com a prática você vai pegando.
Nesse caso do cálculo de médias até o código fica mais limpo.

1 curtida

Poderia me ajudar colocando ele em C? Estou treinando essa mas não consigo fazer

O que já conseguiu fazer?