Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

desafio da aula 2. tentei fazer um sistema pra q não seja escolhido um numero nos dias da semana. De resto tentei fazer oq foi pedido

let dia = prompt ('qual dia da semana é hj?');
console.log(dia);
let numero = 0
if (numero >= 0){
    alert('escolha um dia da semana, não o dia do mês');
}
else (numero >= 0);{
    alert('boa semana ');
} 
if (dia == 'sabado ' || dia == 'domingo'){
    alert('bom final de semana');
}
else (dia =='segunda' || dia == 'terça' || dia == 'quarta' || dia == 'quinta' || dia == 'sexta');{
    alert('boa semana de trabalho');
}

numero = prompt('escolha um numero negativo ou positivo');
if(numero > 0) {
alert('o numero é positivo');
} else {
alert('o numero é negativo');
}

let pontuação = 0;
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!');
}

let saldo = 900;
alert(śaldo atual: ${saldo});

let nome = prompt('qual é o seu nome?');
alert(Olá, ${nome}! Seja bem-vindo!);

2 respostas
solução!

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?

  1. **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.
  2. 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.
  3. 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.
  4. 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!

Eu usei as crases no código, mas não deve ter sido copiado. Muito obrigado pela revisão e pela dica