2011-12-21 55 views
0

我想知道我在做什麼錯了,我試圖拆分int的數字,並將它們輸入Java中的數組。我不知道什麼是錯的,在處理數組時我錯過了什麼嗎?數組到數組

的數組聲明如下所示:

int[] digits = new int [100]; 

這裏的邏輯:

while (r > 0) { 
     // puts digits of n into array 
     count = 0; 
     sum = 0; 
     while (n != 0) { 
      digits[count] = n % 10; 
      count++; 
      n = n/10; 

     } 

     // squares digits[] and populates into sum 
     for (i = 0; i < count; i++) { 
      sum = sum + digits[i]*digits[i]; 
     } 

     // if sum is 1 then print 'Number is a happy number' 
     if (sum == 1) {     
      addItems(b); 
      r = 0; 
     } else { 
      r--; 
     } 
    } 

任何幫助將是非常讚賞,因爲我一直在尋找通過Web幾天現在還沒有找到任何真正的幫助

+5

您需要發佈更多的代碼。我只是根據你的代碼做了http://ideone.com/jJcCG,它工作得很好... – corsiKa 2011-12-21 22:13:24

+2

你面對的是什麼實際問題,這看起來應該起作用...雖然,我不會指望你爲了能夠從一個int中獲得超過9或10個數字,所以你的數組超大。 – 2011-12-21 22:14:12

+0

嘿,我已經編輯了我的問題,我給你的代碼是查找用戶輸入的數字是否很快,我知道這段代碼的工作原理是因爲我在C中創建了它,但必須有一些我需要的東西改變,使其工作,任何幫助? – David 2011-12-21 22:19:34

回答

2

我真的不明白你的代碼。然而,這是我會怎麼做:

public int[] intToDigitArray(int number) 
{ 
    int numberOfDigits = (int) (Math.ceil(Math.log(number)/Math.log(10.0f))); 
    int[] digits = new int[numberOfDigits]; 

    for (int i = 0; i < numberOfDigits; ++i) 
    { 
     int digit = (number % powerOfTen(i + 1))/powerOfTen(i); 
     digits[numberOfDigits - i - 1] = digit; 
    } 

    return digits; 
} 

public int powerOfTen(int exponent) 
{ 
    if (exponent == 0) return 1; 
    return 10 * powerOfTen(exponent - 1); 
} 

測試,工作原理:

System.out.println(Arrays.toString(intToDigitArray(1234445))); 

打印:

[1, 2, 3, 4, 4, 4, 5] 
+0

你確定這個工作正常,我把它複製到一個編譯器中,它沒有按預期工作。你有沒有做出遲到的變化?那麼輸入0呢? – 2011-12-22 01:00:21