4
respostas

imprimir todos os nomes dentro do array um por linha - JavaScript

tenho o seguinte código, usando array. Criar um programa que receba 5 números. 1) Imprima todos os números incluídos no array em uma única linha, 2) imprima a soma dos números. 3) imprima os números incluídos no array , sendo um numero por linha.Quando tento imprimir os numeros um por linha é retornado undefined.Podem me ajudar a entender o que estou fazendo de errado e como corrigir?

<meta charset="utf=8">

<script>

var numeros = [];

    var soma = 0;

    for (var cont = 0; cont <= 4; cont++ ){

        var num = parseInt(prompt("Digite um numero: "));

        numeros[cont] = num;

        soma = soma + num

    }

    document.write("Os numeros digitados são:  " + numeros + "<br>");
    document.write(" A soma dos numeros da lista é:  "  + soma   + "<br> ");

    document.write(numeros[num] + "<br>");

</script>
4 respostas

Olá Vera, tudo bem?

Primeiramente parabéns pelo código!! Ficou excelente!

Agora com relação ao bug, o que ocorre é que no seu ultimo document.write(numeros[num] + "<br>"); a variável num não existe no escopo fora do for. O que o Javascript vai fazer é declarar essa variável (isso só funciona com var) e atribuir o valor de undefined nela. Isso se chama hoisting de variáveis, segue uma documentação baixo

Hoisting de váriaveis

Para imprimir os itens do array, vc precisa utilizar o for novamente mas agora iterando em cima do array. Fica desse jeito:

<meta charset="utf=8">

<script>

    var numeros = [];
    var soma = 0;

    for (var cont = 0; cont <= 4; cont++ ){
        var num = parseInt(prompt("Digite um numero: "));
        numeros[cont] = num;
        soma = soma + num
    }

    document.write("Os numeros digitados são:  " + numeros + "<br>");
    document.write(" A soma dos numeros da lista é:  "  + soma   + "<br> ");

    for (var cont = 0; cont <= numeros.length; cont++) {
        document.write(numeros[cont] + "<br>");
    }

</script>

Espero ter te ajudado! Um abraço e bons estudos!! :-)

Oi Thiago, muito obrigada . Ajudou bastante.Fiz um ajuste no seu for, pois ao executa-lo , além da lista com os números também foi impresso um undefined, haja vista que foram digitados somente números e usando um <= numeros.length, ele considera um 5º elemento em virtude da quantidade de elementos que tem dentro do array, mas em relação a numeração , o array vai de 0 a 4 . neste caso. Então eu alterei o <= para somente <. Estou correta neste entedimento?

Contudo sem em a sua ajuda , eu não teria conseguido resolver. Vou ler a documentação indicada por você. Muito obrigada!

insira seu código aqui

Oii Vera, ficou muito feliz que tenha dado certo.

Então com relação a isso, que chama inclusive/exclusive. Com funciona? Vamos lá.

for(let cont = 0; cont < 4; cont++) {}

Neste caso a iteração será do tipo exclusive pois o laço será repetido de 0 até 3. (0,1,2,3). Entendeu?

for(let cont = 0; cont <= 4; cont++) {}

Agora deste jeito, a iteração será do tipo inclusive pois laço será repetido de 0 até (inclusive) 4. (0,1,2,3,4). Entendeu? Como não existe a posição 4 no array o Javascript atribui undefined por default.

Entendeu?

Entendi sim. Mais uma vez muito obrigada pelas explicações Thiago.tudo de melhor para você!!!