Java的; int []到int

时间:2011-08-24 03:52:44

标签: java arrays integer

如何将整数数组转换为整数,但是以特殊方式?

例如,我如何将{1,9,9,0}转换为1990?

7 个答案:

答案 0 :(得分:17)

这适用于任何大小的整数数组

int nums[] = { 1, 9, 9, 0 };

StringBuilder strNum = new StringBuilder();

for (int num : nums) 
{
     strNum.append(num);
}
int finalInt = Integer.parseInt(strNum.toString());
System.out.println(finalInt);

答案 1 :(得分:6)

int[] array = {1,9,9,0};
int result = 0;
for(int i = 0; i < array.length; i++) result += Math.pow(10,i) * array[array.length - i - 1];
System.out.println(result);
Output: 1990

答案 2 :(得分:2)

看到涉及Math.powString等的不必要复杂的解决方案令人沮丧。即使是正则表达式和第三方库也会出现!

你需要的只是一个循环并乘以10:

int num = 0;
for (int a : arr) {
  num = 10*num + a;
}

这当然假设arr的元素在0-9范围内;但是,无论如何,在这种情况之外的正确行为是不确定的。

它还假设数组的数字可以转换为没有溢出的整数;但由于问题是要求转换为整数,溢出行为也是未定义的。

请注意,您可以按照与string concatenation solution类似的方式处理“element&gt; 9”案例,方法是计算您需要移位num的位数:

int num = 0;
for (int a : arr) {
  if (a < 0) throw new IllegalArgumentException();
  int i = a;
  do {
    num *= 10;
    i /= 10;
  } while (i != 0);
  num += a;
}

我不认为这是处理元素中多位数的最合适方式;至少应该指定行为。我只是指出你不需要使用字符串来处理它。

答案 3 :(得分:1)

我不确定Java,但是在伪.NET代码中:

String value = "";
for (int i = 0; i < array.length; i++)
{
    value += array[i]; // Build out the number as a string
}

int someInt = Integer.parseInt(value);

答案 4 :(得分:1)

假设您有Integer[]中的数字而不是原始int[]并且Commons Lang Library,您可能会发现以下一个有用的内容

    Integer[] array = {1, 9, 9, 0 };
    System.out.println(Integer.valueOf(StringUtils.join(array)));

或者,如果整数太大而无法放入int使用BigInteger

    Integer[] piDigits = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2,
            3, 8, 4, 6, 2, 6, 4, 3, 3, 8, 3, 2, 7, 9, 5, 0, 2, 8, 8, 4, 1,
            9, 7, 1, 6, 9, 3, 9, 9, 3, 7, 5, 1, 0, 5, 8, 2, 0, 9, 7, 4, 9,
            4, 4, 5, 9, 2, 3, 0, 7, 8, 1, 6, 4, 0, 6, 2, 8, 6 };
    System.out.println(new BigInteger(StringUtils.join(piDigits)));

答案 5 :(得分:0)

使用:

public void turnArrToInt(int x[]){
    for(int i = 0; i < x.length; i++){
        number += x[i]*Math.pow(10,x.length-i-1);
    }

这就是我实现它的方式。它接受每个元素,如果它是数组的第一个,则将它乘以10 ^(数组的长度 - 1 - theCurrentElement)并将其全部添加到结果中。它适用于所有尺寸。基本上将第100个乘以100,将第10个乘以10,依此类推。

例如:char = {1,2,3}会将1乘以100 2乘以10 3乘以1得到所有的总和并得到123.

答案 6 :(得分:0)

Arrays.toString(nums).replaceAll("\\D+","");