如何将一个数组的元素连接成一个整数

3

有一个数组,名为arr,包含以下元素:

6,5,1,0,9

我需要一个整数

a=65109

并且

b=90156

13
好的,使用重复加法和乘以10似乎相当简单。你尝试了什么,卡在哪里了? - Jon Skeet
你能保证数组元素都是一位数吗?如果是,可以使用重复加法和乘法,否则基于字符串的解决方案可能更容易。 - Vincent van der Weele
@user3932092,我已经发布了我的答案。 - Kick Buttowski
4个回答

6
    StringBuilder builder = new StringBuilder();
    for(int i = 0;i<arr.length;i++){
        builder.append(arr[i]);
    }
    long a = Long.parseLong(builder.toString());
    long b = Long.parseLong(builder.reverse().toString());
    System.out.println(a);
    System.out.println(b);

这很聪明,因为你只需要在它上面调用Integer.parseInt(),就能得到你的数字。 - EpicPandaForce
还要考虑最终结果可能是整数的情况。 - Anjan Baradwaj
1
这样做是不行的,你正在连接索引 i 而不是数字 arr[i]。因此,你将打印出 "1234" 和 "43210",而不是 "65109" 和 "90156"。 - Florent Bayle
@FlorentBayle 哎呀,应该是arr[i],让我来纠正一下。 - Pravin

6
int arr[] = {6,5,1,0,9};
int result = 0,reverse = 0;
for (int i = 0; i < arr.length; i++) {
    result= result*10 + arr[i];
    reverse = reverse*10+arr[arr.length-1-i];
}
System.out.println(result);//number 65109
System.out.println(reverse);//number 90156

如果arr[]中的项目数量增加,resultreverse应该是long类型。 - Pravin

2
您可以通过使用String类的valueOf()方法和Number类的parseXXX()方法来获得它。以下是示例代码片段:
class Test{
    public static void main(String[] args){
           int[] arr={6,5,1,0,9};
           String str="";
           for(int i=0;i<arr.length;i++){
                int x=arr[i];
                str=str+String.valueOf(x);
              }
           int concatenated=Integer.parseInt(str);
           System.out.println(concatenated);
}
}

对于反向部分,在for条件中进行修改:

for(int i=arr.length-1;i>=0;i--)

现在,for循环将以相反的顺序迭代数组。

这只回答了问题的一部分,那反向部分呢? - Florent Bayle
@FlorentBayle,我已经发布了我的答案,请问您能否告诉我您的想法? - Kick Buttowski

0

Java 8

代码:

    List<Integer> list = Arrays.asList(6, 5, 1, 0, 9);
    int value = Integer.parseInt(list.stream()
            .map(i -> Integer.toString(i))
            .reduce("", String::concat));
    System.out.println(value);

    Collections.reverse(list);
    int ReverseValue = Integer.parseInt(list.stream()
            .map(i -> Integer.toString(i))
            .reduce("", String::concat));

    System.out.println(ReverseValue);

输出:

65109
90156

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接