Отдельные цифры положительного целого числа в JS с использованием цикла while без строки / массива - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь запустить программу, которая, получив положительное целое число, разбивает ее на отдельные цифры следующим образом.Число 652, вывод 2, 5, 6. Предполагается, что массивов нет, и я не могу сделать число строкой.Я написал большую часть кода, но в нем отсутствует то, что я не могу понять.Проблема в том, что я не знаю, как хранить числа для вывода во время итераций.Буду признателен за любую помощь.Я использую цикл while, но цикл for также можно использовать.

function problem_09() {

  var outputObj=document.getElementById("output");

  var a = parseInt(prompt("Please enter a number: ", ""));
  var i = 0;
  var digits = ;

  outputObj.innerHTML="number: "+a+"<br><br>its digits: ";

  while (a>0) {
    digits[i]= a%10;

    a = Math.floor(a/10);
    i++;
  }

  outputObj.innerHTML=digits;

  outputObj.innerHTML=outputObj.innerHTML+"<br><br>"+"program ended";
  document.getElementsByTagName("button")[0].setAttribute("disabled","true");
}

Я знаю, что проблема связана с цифрами и i, но я не знаю, как это исправить.

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

затем просто заменить

var i = 0;
var digits = [];

while (a > 0) {
    digits.push(a % 10);
    a = Math.floor(a/10);
    i++;
}

вопрос не имеет смысла ... без массивов, но он на самом деле ожидает, что результатом будет массив ...

0 голосов
/ 07 февраля 2019

Решение без использования Math.floor(...)

function getDigits(n) {
  var res = [];

  while (n > 0) {
    var r = n % 10,
      d = n - r,
      curr = d / 10;
    n = curr;
    res.push(r);
  }

  return res;
}

var n = prompt("Enter a number: "),
  output = document.getElementById("output");
output.textContent = getDigits(+n);
<div id="output"></div>
0 голосов
/ 07 февраля 2019

Вы можете взять значение места и умножить на 10 для каждой итерации.

function getDigits(value) {
    var place = 1;

    while (value >= place) {
        console.log(Math.floor(value / place) % 10);
        place *= 10;
    }
}

getDigits(652);
getDigits(100);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...