【问题标题】:How to concatenate elements of an array into an integer如何将数组的元素连接成整数
【发布时间】:2014-08-12 06:21:02
【问题描述】:

有一个数组说 arr 与元素

6,5,1,0,9

我想要一个整数

a=65109

b=90156

【问题讨论】:

  • 好的,通过重复加法和乘以 10,这看起来相当简单。您尝试过什么,您在哪里卡住了?
  • 是否保证您的数组元素是个位数?如果是,请使用重复的加法和乘法,否则基于字符串的解决方案可能更容易。
  • @user3932092 我发布了我的答案

标签: java arrays int


【解决方案1】:
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

【讨论】:

  • resultreverse 应该是 long 类型以防arr[]中的项目数增加
【解决方案2】:
    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()就可以取回您的号码。
  • 还要考虑最终结果是整数的可能性。
  • 这不起作用,您连接的是索引i,而不是数字arr[i]。因此,您将打印“1234”和“43210”,而不是“65109”和“90156”。
  • @FlorentBayle Opps 它会 arr[i] 让我更正一下
【解决方案3】:

可以通过String类的valueOf()方法和Number类的parseXXX()方法获取。示例代码sn-p如下:

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(int i=arr.length-1;i>=0;i--)

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

【讨论】:

  • 这个只回答了部分问题,那反面呢?
  • @FlorentBayle 我发布了我的答案,你能告诉我你的想法吗?
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多