Valor de variavel inicializada dentro de um switch

2 respostas
java
G

Bom dia galera!

estou com uma dúvida acadêmica básica:

55 do{ 56 switch (Alu){ 57 case 1: 58 MED = MED1; 59 60 case 2: 61 MED = MED2; 62 63 case 3: 64 MED = MED3; 65 66 case 4: 67 MED = MED4; 68 69 case 5: 70 MED = MED5; 71 72 case 6: 73 MED = MED6; 74 75 } 76 77 if(MED < 4){ 78 System.out.println("Reprovado"); 79 Alu = Alu + 1; 80 REP = REP + 1; 81 } else if(MED < 7){ 82 System.out.println("Exame Final"); 83 Alu = Alu + 1; 84 EXF = EXF + 1; 85 } else { 86 System.out.println("Aprovado"); 87 Alu = Alu + 1; 88 AP = AP + 1; 89 } 90 }while(Alu <= 6);
A intenção dessa parte do código é fazer um loop de 6 alunos (Alu) que já tem suas Médias calculadas nas variáveis MED1 á MED6 para filtrar as notas dos mesmos e mostrar se eles são aprovados ou não. (AP, EXF e REP são referentes a outros processos do programa)

na linha 77 existe um erro de que a MED não foi inicializada mas gostaria que ela “pegasse” um dos 6 casos do switch para inicializar essa variável e já usa-la no IF, a única solução que encontrei seria não fazer um loop mas iria ficar muito grande meu códig, o que eu posso fazer?

vlw galera!

2 Respostas

D

Olá

O que aconteceria se o valor da variável Alu for 7? O java não tem como saber que o valor de Alu vai de 1 a 6.

Duas opções:
1 - Inicializar a variável antes do loop (do)

// Exemplo
double MED = 0;

2 - Criar um valor padrão no switch

case 6:
MED = MED6;

default:
MED = 0;

}

Obs:
Seguindo o q vc postou, caso Alu seja 1, MED será igual a MED6. Para arrumar isso, insira um break para cada case:

case 1:
MED = MED1;
break;
D

3 - Usando array

double[] MEDS = new double[] { MED1, MED2, MED3, MED4, MED5, MED6 };

// recomendo while
while (Alu <= 6) {
    MED = MEDS[Alu - 1]; // MED1 esta no indice 0, portanto Alu - 1
    /** ... Codigo ... **/
}
Criado 6 de abril de 2016
Ultima resposta 6 de abr. de 2016
Respostas 2
Participantes 2