我正在尝试运行一个程序,该程序在接收到正整数后将其拆分为单独的数字,如下所示。数字是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,但我不知道如何解决。
答案 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++;
}
这个问题没有任何意义,没有数组,但是他实际上期望结果是数组...