たとえばint n = 1234
、 string を作成できる(s.valueOf(n))
場合は、次のように配列を定義します。
int[] array = new int[s.length()]; //this allocates memory for an array with 4 elements
文字列と整数のみを使用せずにこれを行う他の方法はありますか?
Math#log10を使用して桁数を見つけることができます。
numOfDigits = (int)(Math.log10(n)+1);
次のようにします。
int[] array = new int[numOfDigits];
n = 1999
if ,は 4 になることに注意してくださいnumOfDigits
。したがって、1999 の整数ではなく、4 つの整数にメモリを割り当てています。
ただし、メソッドのドキュメントを読むと、次のことに注意してください。
引数が正のゼロまたは負のゼロの場合、結果は負の無限大になります。
Javaについて話していると思いますので、次のようにします。
int value = myValue;
for (int noOfDigits = 1; Math.abs(value) >= 1; ++noOfDigits) {
value /= 10;
}
int[] array = new int[noOfDigits];
数値が負の場合、先行符号のスペースは含まれませんが、この条件を簡単にテストして 1 ずつ増やすことができますnoOfDigits
。
いいえを見つけるために使用log function
します。桁の。
int size = (int)Math.log10(1234)+1;
int[] array = new int[size];
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
、値がまだ負になるということですが、それは別の問題です。
私の理解によると、次のようにして桁数を取得できます
int n = 12345;
int count = 1;
while(n>10){
n = n/10;
count++;
}
int[] array = new int[count];