繁体   English   中英

如何将一串数字转换为 integer 数组?

[英]How do I convert a string of numbers to an integer array?

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

我想要一种将字符转换为 integer, '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 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();
}

这可能会有所帮助 -

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;
}

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

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

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

由于Java 9您可以使用String#codePoints方法。

在线尝试!

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]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM