Em JavaScript, seria similar à outras apresentadas, aproveitando o método repeat
, que repete uma string várias vezes:
var height;
while (true) {
height = parseInt(prompt('Digite a altura:'));
if (1 <= height && height <= 8) {
break;
} else {
console.log('Altura deve ser um número entre 1 e 8'); // pode usar alert em vez de console.log
}
}
for (var i = 1; i <= height; i++) {
console.log(' '.repeat(height - i) + '#'.repeat(i));
}
Para ler o número, estou levando em conta que está rodando em um browser, pois uso prompt
para obter a entrada do usuário. Se estiver rodando em outro ambiente (por exemplo, Node na linha de comando), pode usar outras alternativas.
Vale lembrar que o código acima dá a mesma mensagem caso o número esteja fora da faixa entre 1 e 8, ou se não for digitado um número (por exemplo, "xyz"). Mas se quiser separar as mensagens, pode fazer:
var height;
while (true) {
height = parseInt(prompt('Digite a altura:'));
if (isNaN(height)) { // se não digitar um número (por exemplo, "xyz"), cai aqui nesse if
console.log('Você não digitou um número válido')
} else if (1 <= height && height <= 8) {
break; // número entre 1 e 8, sai do while
} else { // se número estiver fora do intervalo, cai aqui no else
console.log('Altura deve ser um número entre 1 e 8'); // pode usar alert em vez de console.log
}
}