如何计算int值中的位数?

时间:2015-05-23 08:48:34

标签: java arrays

给出以下代码。

 int[] eg = {21,20,1,12,2}
 public numbers(int[] eg)
 {
     for(int i=0; i < eg.length; i++)

我希望eg.length为5,其中eg[0] = 21 eg[1]将= 20,eg[3]将= 1

我想检查例如[i]的每个元素,看看它是1位数还是2位数,我试过eg[0].length无效,但我是否正确,假设它只适用于数组列表?

5 个答案:

答案 0 :(得分:14)

将数字转换为字符串并获取长度。

int length = String.valueOf(eg[i]).length();

或者

int length = Integer.valueOf(eg[i]).toString().length();

使用此数学方程式(假设数组中的所有数据都是严格正数)。

int length = (int)(Math.log10(eg[i])+1);

答案 1 :(得分:3)

eg[i]属于int类型,没有length属性。

有很多方法可以告诉这个号码有多少位数:

  • 编写自己的方法,接受int并保持除以10直到数字达到0。

  • 使用数学属性:

    int length = (int) (Math.log10(number) + 1);

  • 将数字转换为字符串并使用其方法

答案 2 :(得分:1)

JDK中使用的算法可能是最快的算法:

final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,
                                  99999999, 999999999, Integer.MAX_VALUE };

// Requires positive x
static int stringSize(int x) {
    for (int i=0; ; i++)
        if (x <= sizeTable[i])
            return i+1;
}

答案 3 :(得分:0)

如果你想知道数字长度是多少,MChaker的解决方案是正确的。但是,如果您想查看该数字是包含一位数还是多位数,那么您可以考虑以下解决方案:

public class NumberTest {
public static void main(String[] args) {
    int[] eg = {21,20,1,12,2, -3, -8, -20};
    System.out.println("Array Length: " + eg.length);

    for(int i=0; i < eg.length; i++) {
        System.out.println("#" + i + ": Value: " + eg[i] + " one digit number: " + isOneDigitNumber(eg[i]));
    }
}
static private boolean isOneDigitNumber(int number) {
    return (-10 < number && number < 10);
}

}

这是以上代码的结果:

Array Length: 8
#0: Value: 21 one digit number: false
#1: Value: 20 one digit number: false
#2: Value: 1 one digit number: true
#3: Value: 12 one digit number: false
#4: Value: 2 one digit number: true
#5: Value: -3 one digit number: true
#6: Value: -8 one digit number: true
#7: Value: -20 one digit number: false
#7: Value: -20 one digit number: false

答案 4 :(得分:-3)

要告诉两位数的一位数,请与10进行比较。