Ir ao conteúdo
  • Cadastre-se

Javascript Vetor - array unidimensional não adiciona novas entradas


Posts recomendados

Olá aos mestres do JavaScrip, tenho o seguinte código aplicativo_020.js:

 

var indice, qtd_Veiculos, tot_Veiculos, nome_veiculo = [];

 

E o seguinte código index.html:

<!DOCTYPE html>

<html lang="pt-BR">
<head>
    <meta charset="utf-8" />
    <title>Aprendendo Algoritmos com JavaScript</title>
</head>
<body>
    <script src="scripts/aplicativo_020.js"></script>    
    <script>
        qtd_Veiculos = parseInt(prompt("Digite a Quantidade de Veículos para Cadastrar ou -1 Para Sair:"));
        while (qtd_Veiculos != -1)
        {
            for (indice = 1; indice <= qtd_Veiculos; indice++)
            {                
                nome_veiculo[indice] = (prompt("Digite o Nome do Veículo:"));
                tot_Veiculos = (indice + 1);
            }
            qtd_Veiculos = parseInt(prompt("Digite a Quantidade de Veículos para Cadastrar ou -1 Para Sair:"));
        }
        tot_Veiculos = (tot_Veiculos -1);
        for (indice = 1; indice <= tot_Veiculos; indice++)        
        {
            document.write("O Veículo " + nome_veiculo[indice] + " tem o índice " + indice);
            document.write("<br>");
        }
    </script>
</body>
</html>

 

Estou usando vetor -array, o que acontece é o seguinte, por exemplo, digite dois veículos, quando ele retorna perguntando se quero encerrar, eu digo que quero incluir mais dois veículos, ao digitar -1 para sair, ele imprime somente os dois últimos veículos cadastrados e não 4 veículos, que deveria ser o correto, conforme figura anexa. Onde estou errando? Fico no aguardo de ajuda, muito grato.

 

Saida_JavaScript.png

Link para o comentário
Compartilhar em outros sites

Boa tarde, primeiramente vejo que ainda tem muito de linguagens mais baixo nível, como C impregnado na sua sintaxe. Tudo bem, com o tempo você perde isso.

 

Quanto ao problema, você tem um erro de lógica, o que acontece é que você está sobrescrevendo os veículos anteriores, isso se dá pelas varáveis de indice, durante o laço.

 

Segue abaixo a minha aproximação de resolução desse problema:

 

var pedindo = true;
var pedindo_numero;
var veiculos = [];

while(pedindo)
{
  quantidade = prompt("Digite a quantidade de veículos ou cancele para sair");

  if(quantidade == undefined)
  {
    // usuário cancelou o prompt
    break;
  }

  pedindo_numero = 0;

  while(pedindo_numero < quantidade)
  {
    nome_veiculo = prompt("Digite o nome do veículo número " + (pedindo_numero+1));

    if(nome_veiculo == undefined)
    {
      // usuario cancelou
      break;
    }

    veiculos.push(nome_veiculo);

    pedindo_numero ++;
  }
}

document.write("Aqui estão o seus veículos <br>");

document.write(veiculos);

 

Repare nos métodos de arrays (push e length) e tambem nos dados retornado pelo método prompt

 

Boa sorte :)

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...