【问题标题】:How do I convert a string of numbers to an integer array?如何将一串数字转换为整数数组?
【发布时间】:2021-06-14 03:42:28
【问题描述】:

我有一个类似"12345" 的字符串,并希望将其转换为整数数组{1,2,3,4,5}

我想要一种将字符转换为整数的方法,'1' -> 1。还有另一种创建数组的方法。

这是我目前所拥有的:

public static int charToInt(char character) {
    int newInt;

    newInt = (int) character;

    return newInt;
}

public static int[] convertStringToIntArray(String keyString) {
    int keyLength = keyString.length();
    int element;

    int[] intArray = new int[keyLength];

    for (element = 0; element < keyLength; element++) {
        intArray[element] = charToInt(keyString.charAt(element));
    }

    // return
    return intArray;
}

我认为问题出在charToInt 方法上。我认为它将char 转换为其 ascii 值。但我不确定其他方法是否正确。

任何帮助将不胜感激。

【问题讨论】:

    标签: java arrays string char integer


    【解决方案1】:

    由于 Java 1.5 Character 有一个有趣的方法 getNumericValue,它允许将 char 数字转换为 int 值。

    所以借助Stream API,整个方法convertStringToIntArray可以改写为:

    public static int[] convertStringToIntArray(String keyString) {
        Objects.requireNonNull(keyString);
        return keyString.chars().map(Character::getNumericValue).toArray();
    }
    

    【讨论】:

      【解决方案2】:

      你是对的。这里的问题在于charToInt
      (int) character 只是 ascii 代码点(或者更确切地说是 UTF-16 代码点)。

      由于数字 '0''9' 的代码点不断增加,您可以通过减去 '0' 将任何数字转换为数字。

      public static int charToInt(char digit)
      {
         return digit - '0';
      }
      

      【讨论】:

        【解决方案3】:

        这可能会有所帮助 -

        int keyLength = keyString.length();
        int num = Integer.parseInt(keyString);
        int[] intArray = new int[ keyLength ];
        
        for(int i=keyLength-1; i>=0; i--){
            intArray[i] = num % 10;
            num = num / 10;
        }
        

        【讨论】:

          【解决方案4】:

          Java 9 开始,您可以使用String#codePoints 方法。

          Try it online!

          public static int[] convertStringToIntArray(String keyString) {
              return keyString.codePoints().map(Character::getNumericValue).toArray();
          }
          
          public static void main(String[] args) {
              String str = "12345";
              int[] arr = convertStringToIntArray(str);
          
              // output
              System.out.println(Arrays.toString(arr));
              // [1, 2, 3, 4, 5]
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-02-26
            • 2016-08-03
            • 1970-01-01
            • 1970-01-01
            • 2010-09-18
            • 2013-03-18
            相关资源
            最近更新 更多