Java:我想将整数数组更改为数学数字

时间:2016-05-04 04:00:24

标签: java

这是我的数组,它由整数数组组成。实际上,这些是我的HashMap的关键,它由一些句子组成或者说" STRING"一个完整的段落作为键值对。现在我想加入这些句子,从给定顺序中一个接一个地取整数数组中的键。

MATCH p=allShortestPaths((a)-[*]->(b))

最终输出应该是按照提到的顺序组合的所有句子,并且outout应该像段落一样:

这是我的第一句话。这是我的第二句话。这是我的第三句话。 这是我的第四句话。这是我的第一句话。

9 个答案:

答案 0 :(得分:3)

您可以执行 math ,而不是将值转换为字符类型。对于数组中的每个数字,相应的10的幂是数组长度(减1)减去索引(因为Java数组使用基于0的索引,最后一个数字对应10 0 )。像,

int[] arr = { 3, 2, 0, 5, 3 };
int result = 0;
for (int i = 0; i < arr.length; i++) {
    result += arr[i] * Math.pow(10, arr.length - i - 1);
}
System.out.println(result);

输出(正如预期的那样)

32053
优化

通过保持10的当前功率并在迭代每个数字时除10,可以进一步优化代码。这也允许使用for-each loop之类的

int[] arr = { 3, 2, 0, 5, 3 };
int result = 0;
int pow = (int) Math.pow(10, arr.length - 1);
for (int digit : arr) {
    result += digit * pow;
    pow /= 10;
}
System.out.println(result);

或者,从右到左迭代数字,并在每次迭代时将pow乘以10。这可能看起来像,

int result = 0;
int pow = 1;
for (int i = arr.length - 1; i >= 0; i--) {
    result += arr[i] * pow;
    pow *= 10;
}

以上也可能写成

int result = 0;
for (int i = arr.length - 1, pow = 1; i >= 0; i--, pow *= 10) {
    result += arr[i] * pow;
}

答案 1 :(得分:2)

1: Android version
2: Android-Platform
3: Target-abi
4: Toolchain name
5: Name of library which needs to be copy on android device after cross-compilation, If we need to copy libraries at
    specific path then also please let me know the path.

答案 2 :(得分:2)

另一种方式:

int[] arr = {3, 2, 0, 5, 3};
int i = Integer.parseInt(Arrays.toString(arr).replaceAll("[\\[,\\] ]", ""));
System.out.println(i); // prints 32053

答案 3 :(得分:1)

虽然相当简单,但您应该尝试自己。 仍然提供解决方案,只需调试并理解它。

工作代码

public static void main(String[] args) throws Exception {
        int[] arr = {3, 2, 0, 5, 3};

        StringBuilder numberStr = new StringBuilder();
        for (int item : arr) {
            numberStr.append(item);
        }
        int finalInt = Integer.parseInt(numberStr.toString());
        System.out.println(finalInt);
    }

<强>输出

32053

答案 4 :(得分:1)

首先通过逐个附加元素并将转换字符串转换为整数将数组转换为字符串。试试这段代码:

var birthDate = calendar?.dateFromComponents(dateComponents)

答案 5 :(得分:1)

使用循环:

      int[] arr = { 3, 2, 0, 5, 3 };
        String itotal = "";
        for (int i = 0; i < arr.length; i++)
        {
           itotal=itotal + String.valueOf(arr[i]);
        }
        int a = Integer.parseInt(itotal);

答案 6 :(得分:1)

android:padding="10dp"

答案 7 :(得分:0)

存在各种方式。 如果我是对的,隐藏的假设是整数数组的较高元素与结果整数的较高位匹配。

int[] arr = {3, 2, 0, 5, 3};
int result = 0;
int power = (int) Math.pow(10, arr.length-1);
for(int element : arr){
    result += element * power;
    power /= 10;
}

答案 8 :(得分:0)

最简单的解决方案是这个。 假设,示例中的每个字母都是一个数字。

  1. 空数组{}:预期值= 0
  2. {a}:预期值= a
  3. {a,b}:期望值= 10 * a + b
  4. {a,b,c}:期望值= 10 *(10 * a + b)+ c
  5. 代码:测试这是online java compiler IDE

    public class ConvertDigitArrayToNumber {
      public static void main(String[] args) {
        int[] arr = {3, 2, 0, 5, 3};
        int value = 0;
        for (int i = 0; i < arr.length; i++) { 
          value = (10*value) + arr[i]; 
        }
        System.out.println(value);
      }
    }
    

    这实际上比其他解决方案更简单,更好。

    • 只有简单的乘法和加法(无权力)。
    • 无字符串转换