2011-03-16 51 views
1

我想添加一個整數值的所有數字,直到我得到一個低於9的值使用JavaScript。打破一個整數到零件

爲一個例子,如果我有198,我想一起添加這些樣1 + 9 + 8 = 18,並且由於18是高於9加1 8再次= 9

+1

這似乎是需要的也許只是一個比你前面的問題http://stackoverflow.com/questions/5151224一步/ how-to-sum-individual-digits-of-integer你不知道額外的步驟還是你不知道JavaScript或兩者或其他的語法?讓我們知道你不瞭解的以及你對這個問題的瞭解,以便我們更好地幫助你。 – blizpasta 2011-03-16 13:16:13

回答

3

而不是給你完整的代碼,我只是解釋如何做到這一點。

你可以用數字%10和隨後的int除10(數字/ 10)來進行模數學計算,直到你得到0來獲得數字的所有數字。將各個數字相加,直到sum> 9在循環中重複上述過程。

編輯:好這裏是你的代碼:

<script> 
var num=198; 
n = num; 
var sum; 
do { 
    sum = 0; 
    while (n>0) { 
     rem = (n % 10); 
     sum += rem; 
     n = (n - rem)/10;  
    } 
    n = sum; 
} while(sum>9); 

alert("sum is: " + sum); 

</script> 
+0

你能給我一個這樣的示例代碼嗎?我是一個JavaScript新手 – megazoid 2011-03-16 13:16:23

+2

@megazoid:加法,模和除法的工作方式與其他語言相同。數組(大部分)相同,但您可以查看https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array – 2011-03-16 13:18:20

+0

@megazoid:爲您添加了代碼。 – anubhava 2011-03-16 13:36:48

0

這裏有兩個提示:(i % 10)給出了i的最小有效十進制數字,而i /= 10i刪除了最小有效數字。剩下的部分作爲讀者的練習。

+0

你可以將我的C#代碼遷移到Javascript嗎? int i = 723; int acc; do { acc = 0; (i> 0) acc + = i%10; acc(= 0) acc + = i%10; i = 10; } i = acc; } while(acc> = 10); – megazoid 2011-03-16 13:20:43

+0

@megazoid:請參閱我的回答上面的問題的JavaScript代碼。 – anubhava 2011-03-16 13:41:15

1
function foo(var x) 
{ 
    while(x > 9) 
    { 
     var y = 0; 
     while(x!=0) 
     { 
      y += x%10; 
      x = Math.floor(x/10); 
     } 
     x = y; 
    } 
    return x; 
} 
+0

這個代碼不會工作,因爲它不是在做整數除法。請看我上面的答案。 – anubhava 2011-03-16 13:38:54

+0

我在這裏得到答案,但我也得到小數點以及如何來? – megazoid 2011-03-16 13:41:55

+0

@anubhava你確定在JavaScript中我們不能做整數除法嗎?也許你現在不在使用JS,也許我已經忘記了一些東西) – 2011-03-16 13:43:02