Olá, Miguel. Como vai?
Muito bacana ver que você foi além do que foi pedido no desafio e tentou criar uma lógica para impedir que o usuário digitasse um número no lugar do dia da semana. Esse desejo de testar novas possibilidades é o que faz a gente evoluir de verdade na programação.
Analisando o seu código, a sua ideia de validar a entrada é excelente, mas a estrutura dos condicionais if/else acabou ficando com alguns pequenos detalhes de sintaxe que estão confundindo o interpretador do JavaScript. Vamos entender o que aconteceu e como ajustar.
O que pode ser melhorado no código?
- **Sintaxe do
else**: O comando else serve como uma resposta para "caso contrário". Por isso, ele nunca recebe uma condição entre parênteses e nem deve ter um ponto e vírgula antes do bloco de código. Se você precisa testar uma nova condição após o primeiro if, o correto é usar else if. - Blocos soltos com ponto e vírgula: No trecho
else (numero >= 0);{ ... }, o ponto e vírgula finaliza a instrução antes da hora. Isso faz com que o código dentro das chaves { ... } seja executado sempre, ignorando o teste que você queria fazer. - Template Strings: Nas últimas linhas, para exibir o saldo e o nome usando o símbolo de cifrão e as chaves (ex:
${saldo}), você precisa envolver todo o texto usando crases ( ` ) e não aspas simples ou acentos normais. - Validação do número: Como a variável
numero foi iniciada com o valor 0, a condição if (numero >= 0) sempre será verdadeira. Para validar se o usuário digitou um número em vez de um texto, o JavaScript possui uma função muito útil chamada isNaN(), que verifica se o valor não é um número.
O Código Corrigido e Otimizado
Veja como estruturar esses blocos para que o navegador entenda perfeitamente a sua lógica:
// --- DESAFIO 1: Dias da Semana ---
let dia = prompt('Qual dia da semana é hoje?');
console.log(dia);
// Verificamos se o usuário digitou um número. Se for um número, isNaN retorna false, então usamos o Number.isInteger ou simplesmente checamos se o texto pode ser convertido.
// Uma forma simples de verificar se o usuário digitou um número é testar se o valor não está vazio e se é um número:
if (!isNaN(dia) && dia.trim() !== "") {
alert('Escolha um dia da semana por extenso, não o número do dia!');
} else if (dia === 'sabado' || dia === 'domingo') {
alert('Bom final de semana!');
} else {
alert('Boa semana de trabalho!');
}
// --- DESAFIO 2: Número Positivo ou Negativo ---
let numero = prompt('Escolha um número negativo ou positivo:');
if (numero >= 0) {
alert('O número é positivo (ou zero)');
} else {
alert('O número é negativo');
}
// --- DESAFIO 3: Sistema de Pontuação ---
let resposta = prompt('Qual foi a sua pontuação?');
if (resposta >= 100) {
console.log('Parabéns, você é um ótimo jogador!');
alert('Parabéns, você é um ótimo jogador!');
} else {
console.log('Continue praticando para melhorar sua pontuação!');
alert('Continue praticando para melhorar sua pontuação!');
}
// --- DESAFIO 4 e 5: Saldo e Boas-vindas com Template Strings (usando crases) ---
let saldo = 900;
alert(`Saldo atual: R$ ${saldo}`);
let nome = prompt('Qual é o seu nome?');
alert(`Olá, ${nome}! Seja bem-vindo!`);
O que mudou?
- Tratamento de strings: Removi o espaço extra que estava em
'sabado ' para evitar que o programa falhasse caso o usuário digitasse a palavra perfeitamente. - Uso das crases: Corrigi os alertas de saldo e nome utilizando as crases obrigatórias para que a interpolação com
${} funcione perfeitamente na tela. - Lógica limpa: A estrutura de dias da semana agora flui de forma linear: primeiro testa se é um número, depois se é fim de semana, e o
else final abraça os dias úteis de forma automática.
Espero que possa ter lhe ajudado!