使用while循环的JS中正整数的分隔数字,不带字符串/数组

时间:2019-02-07 19:36:41

标签: javascript html while-loop numbers digits

我正在尝试运行一个程序,该程序在接收到正整数后将其拆分为单独的数字,如下所示。数字是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 :(得分:1)

您可以取一个位置值,并为每次迭代乘以10。

function getDigits(value) {
    var place = 1;

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

getDigits(652);
getDigits(100);

答案 1 :(得分:0)

不使用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>

答案 2 :(得分:-1)

然后替换

var i = 0;
var digits = [];

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

这个问题没有任何意义,没有数组,但是他实际上期望结果是数组...