Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
estou cursando na Rocketseat, e um dos exercícios de la é fazer um sisteminha de conversão de notas, de numérico para alfabético, eu fiz o exercício de duas formas, uma deu certo (com if's), porem quando tentei usar switch, deu erro, sempre caia em 'default', como posso resolver? ps: eu não quero ver a solução do vídeo pq lá provavelmente vai ensinar com if's, e isso eu já sei.
function ConverteNota(nota) {
nota = Number(nota)
let notaA = (nota >= 9 && nota <= 10);
let notaB = (nota >= 8 && nota < 9);
let notaC = (nota >= 7 && nota < 8);
let notaD = (nota >= 6 && nota < 7);
let notaF = (nota < 6 && nota >= 0);
switch (nota) {
case notaA:
console.log('Nota A');
break;
case notaB:
console.log('Nota B');
break;
case notaC:
console.log('Nota C');
break;
case notaD:
console.log('Nota D');
break;
case notaF:
console.log('nota F');
break;
default:
console.log('insira uma nota valida!')
break;
};
};
ConverteNota(10);
Olá amigo. Seja bem-vindo.
O problema é que você está enviando a variável que será comparada pelo switch (um número) e depois a compara com valores booleanos, como nota >= 9 && nota <= 10 (cujo resultado da operação seria true ou false).
Em outras palavras, o que está sendo feito no seu código é algo assim:
if ( nota === notaD )// 5 é igual a false?
console.log( 'notaD' );
if ( nota === notaF )// 5 é igual a true?
console.log( 'notaF' );
// Não faz muito sentido... Geralmente nossa intenção é comparar tipos iguais
Resumindo: neste caso o switch não tem muita serventia. O propósito do código é melhor atendido pelo if.
Pense em switch para fazer algo como:
var Animal = 'Girafa';
switch (Animal) {
case 'Vaca':
case 'Girafa':
case 'Cachorro':
case 'Porco':