如何将一串数字转换为整数数组?
How do I convert a string of numbers to an integer array?
我有一个像 "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 值。但我也不确定其他方法是否正确。
如有任何帮助,我们将不胜感激。
你是对的。这里的问题在charToInt
.
(int) character
只是 ascii 代码点(或者更确切地说是 UTF-16 代码点)。
因为数字 '0'
到 '9'
的代码点递增,您可以通过减去 '0'
.
将任何数字转换为数字
public static int charToInt(char digit)
{
return digit - '0';
}
因为 Java 1.5 Character
有一个有趣的方法 getNumericValue
允许将 char 数字转换为 int 值。
所以借助StreamAPI,整个方法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;
}
因为 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]
}
我有一个像 "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 值。但我也不确定其他方法是否正确。
如有任何帮助,我们将不胜感激。
你是对的。这里的问题在charToInt
.
(int) character
只是 ascii 代码点(或者更确切地说是 UTF-16 代码点)。
因为数字 '0'
到 '9'
的代码点递增,您可以通过减去 '0'
.
public static int charToInt(char digit)
{
return digit - '0';
}
因为 Java 1.5 Character
有一个有趣的方法 getNumericValue
允许将 char 数字转换为 int 值。
所以借助StreamAPI,整个方法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;
}
因为 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]
}