2011-12-21 7 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--; 
     } 
    } 

私は数日のためにウェブを見てきたようすべてのヘルプは非常に高く評価されるだろう今実際の助けを見つけていない

+5

。私はちょうどあなたのコードに基づいてhttp://ideone.com/jJcCGをして、それはちょうど良い... – corsiKa

+2

あなたが直面している実際の問題は、これは動作するように見えます...しかし、私はあなたを期待していないだろうintから9桁または10桁以上を得ることができるので、配列は大きすぎます。 –

+0

ねえ、私は自分の質問を編集しました。私が与えたコードは、ユーザーが入力した数字が幸せであるかどうかを調べることです、私はこのコードがC言語で作ったので分かります。それを機能させるために変更してください。 – David

答えて

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はどうですか? –

関連する問題