4

たとえばint n = 1234、 string を作成できる(s.valueOf(n))場合は、次のように配列を定義します。

int[] array = new int[s.length()]; //this allocates memory for an array with 4 elements

文字列と整数のみを使用せずにこれを行う他の方法はありますか?

4

5 に答える 5

13

Math#log10を使用して桁数を見つけることができます。

numOfDigits = (int)(Math.log10(n)+1);

次のようにします。

int[] array = new int[numOfDigits];

n = 1999if ,は 4 になることに注意してくださいnumOfDigits。したがって、1999 の整数ではなく、4 つの整数にメモリを割り当てています。

ただし、メソッドのドキュメントを読むと、次のことに注意してください。

引数が正のゼロまたは負のゼロの場合、結果は負の無限大になります。

于 2013-05-07T10:12:29.163 に答える
5

Javaについて話していると思いますので、次のようにします。

 int value = myValue;
 for (int noOfDigits = 1; Math.abs(value) >= 1; ++noOfDigits) {
     value /= 10;
 }

 int[] array = new int[noOfDigits];

数値が負の場合、先行符号のスペースは含まれませんが、この条件を簡単にテストして 1 ずつ増やすことができますnoOfDigits

于 2013-05-07T10:12:43.320 に答える
2

いいえを見つけるために使用log functionします。桁の。

int size = (int)Math.log10(1234)+1;
int[] array = new int[size];
于 2013-05-07T10:16:09.010 に答える
0
if (n>0){
    numberOfDigets = (int)(Math.log10(n)+1);
} 
else if (n < 0){
    numberOfDigets = (int)(Math.log10(Math.abs(n))+1);
} else {
    numberOfDigets = 1;
}

n が 0 より大きい場合、Maroun Maroun が書いたように Math.log10 関数を使用します。n がゼロより小さい場合は、Math.abs 関数を使用して正の値を取得します。- にスペースを割り当てたい場合は、1 の代わりに 2 を追加します。else 句は、n がゼロで、numberOfDigets を 1 に設定する場合に使用します。

Java 関数への余分な呼び出しが問題にならない場合は、このコードを使用してください。if (n != 0){ numberOfDigets = (int)(Math.log10(Math.abs(n))+1); } そうでなければ { numberOfDigets = 1; }

Math.abs(n)は常に n の肯定的なバージョンを返します。注意すべき値はInteger.min_value、値がまだ負になるということですが、それは別の問題です。

于 2013-05-07T20:53:49.087 に答える
0

私の理解によると、次のようにして桁数を取得できます

    int n = 12345;
    int count = 1;
    while(n>10){
         n = n/10;
         count++; 
    }
    int[] array = new int[count];
于 2013-05-07T10:26:46.110 に答える