如何在Java中将字符串转换为整型数组?

4

如果String的格式类似于"19 35 91 12 36 48 59",我想要一个具有相同结构的数组。

我已经尝试过:

array[]=Integer.parseInt(str);

2
Java API中没有单一的方法来处理此问题。将字符串按空格拆分,检查拆分得到的元素数量,创建int数组,迭代标记,解析它们并放置在int数组中。 - Pshemo
1
你卡在哪里了?你尝试过什么了? - Nicholas K
1
这似乎是已经有答案的问题。在发帖之前,您应该尝试搜索其他带有解决方案的问题。 - LuminousNutria
这回答了你的问题吗?将字符串数组转换为整型数组 - Mr. Jain
4个回答

7
我会将字符串分割,流式处理数组,逐个元素解析并收集到一个数组中:
int[] result = Arrays.stream(str.split(" ")).mapToInt(Integer::parseInt).toArray();

4
需要注意的是,使用这个方法需要安装Java 8。 - Cup of Java

4
如果它们由空格分隔,您可以像这样逐个转换它们。
String array = "19 35 91 12 36 48 59";
// separate them by space
String[] splited = array.split(" ");
// here we will save the numbers
int[] numbers = new int[splited.length];
for(int i = 0; i < splited.length; i++) {
    numbers[i] = Integer.parseInt(splited[i]);
}
System.out.println(Arrays.toString(numbers));        

1
如果您想使用Integer[]数组而不是int[],请使用以下代码:
String input = "19 35 91 12 36 48 59";
String[] array = input.split(" ");
Integer[] result = Stream.of(array).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);

1

你也可以像这样做,尽管这个解决方案可能没有上面的解决方案漂亮:

 String S;
 int Array[]= new int[S.length()];
 int Counter=0;
 for(int i=0; i<S.length(); i++){
     if(Character.isDigit(S.charAt(i))==true){
        Array[Counter]=Integer.parseInt(S.charAt(i)+"");
        Counter++;
     }
 }

缺点是,如果字符串不完全由数字组成,那么你将得到一个部分为空的数组。根据你使用数组的目的,你可能需要使用其他东西。

哦,我想我误读了这个问题,因为你想要相同结构的数组,也就是包括空格,我建议如下: String S; char array[]=S.toCharArray(); - wittn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接