2012-02-03 47 views
-1

我有一個6位整數。
如何讓每個單獨的數字碰撞,使每個數字增加或減少2?執行一個算法在java中增加整數位數

恩。「999999」到「111111」

我想也許劈裂成數片,然後串聯回來。

+1

如果您希望人們花時間回答您的問題,請花時間接受答案。 (點擊最佳答案旁邊的勾號。) – 2012-02-03 08:30:53

+0

好了,現在我正試圖找到一種方法來使用%運算符。 – user1074989 2012-02-03 08:53:22

+0

我實際上不會稱之爲「轉變」,因爲它沒有轉變。無論如何,我最近遇到了在Java中將一個整數分割爲數字的問題,並發現它很難完成 – 2012-02-03 08:58:38

回答

1

可能是更有效的方法,但如果您只處理6位數字,性能問題是可以忽略的。

對數字進行迭代[對原始數字使用%和/運算符],對於每個數字,計算其[+10]值[%10],並將其添加到新數字中,並使用合適的指數。

int x = 999999; 
int $ = 0; 
int exp = 0; 
while (x > 0) { 
    int t = ((x % 10) +2) %10; 
    $ += Math.pow(10, exp++) *t; 
    x /= 10; 
} 
System.out.println($); 

注意:如果數字在左側隱含地包含零,它將會中斷[例如,如果123應該轉換爲222345]。您可以通過迭代來處理它,而不是(exp < 6)而不是(x > 0)

1

這不是一個真正的數學運算或按比特意義上的「移位」。這是一個字符串轉換問題。我建議您:

  1. 轉動整數到字符串
  2. 轉動字符串變換成字符(十進制數字)的陣列,
  3. 修改陣列中的數字,
  4. 轉動陣列背爲String,並
  5. 把字符串轉換成整數

如果您的號碼將作爲字符串提供的,則可以跳過第一個和最後一個步驟。