例如,因为int n = 1234我可以创建一个字符串(s.valueOf(n)),然后我会像这样定义数组:
int[] array = new int[s.length()]; //this allocates memory for an array with 4 elements
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以不使用字符串而只使用整数?
Mar*_*oun 13
您可以使用Math#log10查找位数.
numOfDigits = (int)(Math.log10(n)+1);
Run Code Online (Sandbox Code Playgroud)
你现在做:
int[] array = new int[numOfDigits];
Run Code Online (Sandbox Code Playgroud)
注意,如果n = 1999,numOfDigits将是4.所以你要为4个整数而不是1999整数分配一个内存.
但是在阅读方法文档时要小心,你会注意到:
如果参数为正零或负零,则结果为负无穷大.
我假设你在谈论Java,所以:
int value = myValue;
for (int noOfDigits = 1; Math.abs(value) >= 1; ++noOfDigits) {
value /= 10;
}
int[] array = new int[noOfDigits];
Run Code Online (Sandbox Code Playgroud)
如果数字为负数,则不包括前导符号的空格,但您可以轻松测试此条件并增加noOfDigits1.
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |