Over or under age

Asked

Viewed 135 times

-7

Good afternoon, everyone.

I’m a beginner and started a Javascript course.

I’m trying to do this exercise:

  1. Make a Script to ask the user for his name, age, city of birth and UF. Write on the page the following sentence: I [name of the person], I am x years old, I am [older or younger] and I was born in the city of [name of the city] - [U].

I did the following however, it is replacing the age by the "adult" or "minor":

Exercise 3
<script>

    var nome = prompt("Digite seu nome");
    var idade = prompt("Digite sua idade");
    var cidade = prompt("Digite a cidade em que nasceu");
    var uf = prompt("Digite a UF da cidade em que nasceu");
    var maiorDeIdade = "maior de idade"
    var menorDeIdade = "menor de idade"

    if (idade > 18){
        idade = maiorDeIdade

    }
    else {
        idade = menorDeIdade

    }

    document.write("Eu " + nome + ", tenho " + idade + " de idade, sou" + idade + " e nasci na cidade de " + cidade + " - " + uf );

</script>

How to leave showing age in number and whether it is older or younger ide age?

Thank you!

  • You want to do idade = idade + ' (' + maiorDeIdade + ') ';?

  • In the text he should present example: I Vinicius am 18 years old, I am of age and I was born in the city of Brasilia - DF

  • prompt returns a string. so Javascript can’t verify that the text "18" is larger than the number 18. Use Number or parseint to convert from string for number (whole) before checking the condition of majority. Answer to another question

  • 2

    Shouldn’t it be >= 18? Anyway, don’t overwrite the age variable, otherwise you lose the number given by the user

  • @Valdeirpsr the problem is that you are using a variable (idade) for two things. Create a variable var maiorOuMenorDeIdade, within the if instead of storing in idade, store in this new variable. And then in your document.write swap the sou + idade + for sou + maiorOuMenorDeIdade +

  • https://codesandbox.io/s/maior-ou-menor-de-idade-3d5zt

  • It worked out here guys. Thank you!

  • 3

    @Viniciusbarrosmarques to succeed and be right are very different things; I always put this to show the difference https://i.stack.Imgur.com/zdAbK.jpg. You’ve received a response that makes you right, more than just seeing the result show up. Someone thought she was wrong for giving a negative, the person could steer what she thought wrong there, because I couldn’t see.

Show 3 more comments

2 answers

5

As others have commented, the main error was rewriting the variable idade.

Yet, as mentioned by @bfavaretto, it would be >= 18, and has a string comparison with integer commented by @Valdeirpsr, that although it does not prevent the execution of the code, it is ideal to avoid.

For educational purposes follow the corrections of comments applied in their original code, not to mix with other concepts. Obviously in real code there is no need to create so many variables.

I left //comments in the code to show what has changed.

var nome = prompt("Digite seu nome");
var idade = prompt("Digite sua idade");
var cidade = prompt("Digite a cidade em que nasceu");
var uf = prompt("Digite a UF da cidade em que nasceu");
var maiorDeIdade = "maior de idade";    // adicionado ; no fim das linhas
var menorDeIdade = "menor de idade";    
var maiorOuNao;                         // criamos uma variável nova

if (parseInt(idade,10) >= 18){          // adicionado parseInt e >= 
    maiorOuNao = maiorDeIdade;          // a variável nova e ; no fim da linha
}
else {
    maiorOuNao = menorDeIdade;          // a variável nova e ; no fim da linha
}

document.write("Eu " + nome + ", tenho " + idade + " anos de idade, sou " + maiorOuNao + " e nasci na cidade de " + cidade + " - " + uf );

1

In your code you ended up escaping logic, using the variable idade for 2 actions, where the result of the same would be

"I Vinicius, I am of age, I am of age and I was born in the city of São Paulo - SP"

correction of the code below:

var nome = prompt('Digite seu nome:');
var idade = prompt('Digite sua idade:');
var cidade = prompt('Digite a cidade em que nasceu:');
var uf = prompt('Digite a UF da cidade em que nasceu:');

console.log('Eu ' +nome+ ', tenho ' +idade+ ' anos e sou ' +(idade >= 18 ? 'maior de idade' : 'menor de idade')+ ', nasci na cidade de ' +cidade+ '/'+ uf);

// ou

// document.write('Eu ' +nome+ ', tenho ' +idade+ ' anos e sou ' +(idade >= 18 ? 'maior de idade' : 'menor de idade')+ ', nasci na cidade de ' +cidade+ '/'+ uf);

made use of the ternary condition, for cleaner code! thus excluding variables maiorDeIdade and menorDeIdade because they are fixed "values" there would be no need to store them in a variable, unless they were changed later. I hope you helped him! Good studies.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.