一个while循环将多位数的数字相加?(Javascript)
我需要将一个数字的位数相加(例如,21是2+1),以便该数字仅减少到一位数(3)。我知道该怎么做了 但是, 1) 我可能需要对同一个变量多次调用该函数(例如,99是9+9=18,仍然是>=10),并且 2) 我需要将数字11和22从这个函数的范围中排除 我到底哪里出了问题一个while循环将多位数的数字相加?(Javascript),javascript,function,while-loop,numbers,digits,Javascript,Function,While Loop,Numbers,Digits,我需要将一个数字的位数相加(例如,21是2+1),以便该数字仅减少到一位数(3)。我知道该怎么做了 但是, 1) 我可能需要对同一个变量多次调用该函数(例如,99是9+9=18,仍然是>=10),并且 2) 我需要将数字11和22从这个函数的范围中排除 我到底哪里出了问题 var x = 123; var y = 456; var z = 789; var numberMagic = function (num) { var proc = num.toString().split(""
var x = 123;
var y = 456;
var z = 789;
var numberMagic = function (num) {
var proc = num.toString().split("");
var total = 0;
for (var i=0; i<proc.length; i++) {
total += +proc[i];
};
};
while(x > 9 && x != 11 && x != 22) {
numberMagic(x);
};
} else {
xResult = x;
};
console.log(xResult);
//repeat while loop for y and z
var x=123;
变量y=456;
var z=789;
var numberMagic=函数(num){
var proc=num.toString().split(“”);
var合计=0;
对于(变量i=0;i 9&&x!=11&&x!=22){
数字逻辑(x);
};
}否则{
xResult=x;
};
console.log(xResult);
//对y和z重复while循环
我不确定你想要什么。。
使用此功能,您可以将任何数字减少为一个位数
while(num > 9){
if(num == 11 || num == 22) return;
var proc = num.toString();
var sum = 0;
for(var i=0; i<proc.length; i++) {
sum += parseInt(proc[i]);
}
num = sum;
}
while(num>9){
如果(num==11 | | num==22)返回;
var proc=num.toString();
var总和=0;
对于(var i=0;i,也请查看此解决方案的结果
var x = 123;
var y = 456;
var z = 789;
var numberMagic = function (num) {
var total = 0;
while (num != 0) {
total += num % 10;
num = parseInt(num / 10);
}
console.log(total);
if (total > 9)
numberMagic(total);
else
return total;
}
//第一次调用函数
numberMagic(z);以下是代码的问题
var x = 123;
var y = 456;
var z = 789;
var numberMagic = function (num) {
var proc = num.toString().split("");
var total = 0;
for (var i=0; i<proc.length; i++) {
total += +proc[i]; // indentation want awry
}; // don't need this ; - not a show stopper
// you're not returning anything!!!!
};
while(x > 9 && x != 11 && x != 22) {
numberMagic(x);
}; // ; not needed
// because x never changes, the above while loop would go on forever
} else { // this else has no if
xResult = x; // even if code was right, x remains unchanged
};
console.log(xResult);
我在上写了一个示例,您可以将任何给定的数字转换为一位数:
输入示例:551
- [5,5,1]数组-添加最后2位
- [5,6]数组-添加最后2位
- [1,1]数组-添加最后2位
- [2]输出阵列
以下是实际代码:
var number = 1768;
var newNumber = convertToOneDigit(number);
console.log("New Number: " + newNumber);
function convertToOneDigit(number) {
var stringNumber = number.toString();
var stringNumberArray = stringNumber.split("");
var stringNumberLength = stringNumberArray.length;
var tmp;
var tmp2;
var tmp3;
console.log("Array: " + stringNumberArray);
console.log("Array Length: " + stringNumberLength);
while (stringNumberLength > 1) {
tmp = parseInt(stringNumberArray[stringNumberLength - 1]) + parseInt(stringNumberArray[stringNumberLength - 2]);
stringNumberArray.pop();
stringNumberArray.pop();
tmp2 = tmp.toString();
if (tmp2.length > 1) {
tmp3 = tmp2.split("");
for (var i = 0; i < tmp3.length; i++) {
stringNumberArray.push(tmp3[i]);
}
} else {
stringNumberArray.push(tmp2);
}
stringNumberLength = stringNumberArray.length;
console.log("Array: " + stringNumberArray);
console.log("Array Length: " + stringNumberLength);
}
return stringNumberArray[0];
}
var编号=1768;
var newNumber=convertToOneDigit(数字);
控制台日志(“新编号:+newNumber”);
函数转换为数字(数字){
var stringNumber=number.toString();
var stringnumberraray=stringNumber.split(“”);
var stringNumberLength=stringNumberArray.length;
var-tmp;
var-tmp2;
var-tmp3;
log(“数组:+stringNumberArray”);
log(“数组长度:“+stringNumberLength”);
while(stringNumberLength>1){
tmp=parseInt(stringnumberray[stringNumberLength-1])+parseInt(stringnumberray[stringNumberLength-2]);
stringNumberArray.pop();
stringNumberArray.pop();
tmp2=tmp.toString();
如果(tmp2.length>1){
tmp3=tmp2。拆分(“”);
对于(变量i=0;i
函数添加数字(n){
设str=n.toString().split(“”);
设len=str.length;
再加上,,
acc=0;
对于(i=0;iYep,就是这样。谢谢。现在我想知道为什么我的代码不起作用。你也没有从函数返回任何东西,使它变得无用。这非常有用。非常感谢。
var number = 1768;
var newNumber = convertToOneDigit(number);
console.log("New Number: " + newNumber);
function convertToOneDigit(number) {
var stringNumber = number.toString();
var stringNumberArray = stringNumber.split("");
var stringNumberLength = stringNumberArray.length;
var tmp;
var tmp2;
var tmp3;
console.log("Array: " + stringNumberArray);
console.log("Array Length: " + stringNumberLength);
while (stringNumberLength > 1) {
tmp = parseInt(stringNumberArray[stringNumberLength - 1]) + parseInt(stringNumberArray[stringNumberLength - 2]);
stringNumberArray.pop();
stringNumberArray.pop();
tmp2 = tmp.toString();
if (tmp2.length > 1) {
tmp3 = tmp2.split("");
for (var i = 0; i < tmp3.length; i++) {
stringNumberArray.push(tmp3[i]);
}
} else {
stringNumberArray.push(tmp2);
}
stringNumberLength = stringNumberArray.length;
console.log("Array: " + stringNumberArray);
console.log("Array Length: " + stringNumberLength);
}
return stringNumberArray[0];
}
function addDigits(n) {
let str = n.toString().split('');
let len = str.length;
let add,
acc = 0;
for (i=0; i<=len-1; i++) {
acc += Number(str[i]);
}
return acc;
}
console.log( addDigits(123456789) ); //Output: 45
let i = 0; //it's global to the loop, ( wider scope )
while (i<=x) {
//Code line;
//Code line;
//Code line;
//Code line;
i++
}