如何将数字逗号分隔的字符串转换为int数组

问题描述:

//convert the comma separated numeric string into the array of int. 
    public class HelloWorld 
    { 
     public static void main(String[] args) 
     { 
     // line is the input which have the comma separated number 
     String line = "1,2,3,1,2,2,1,2,3,"; 
     // 1 > split 
     String[] inputNumber = line.split(","); 
     // 1.1 > declare int array 
     int number []= new int[10]; 
     // 2 > convert the String into int and save it in int array. 
     for(int i=0; i<inputNumber.length;i++){ 
       number[i]=Integer.parseInt(inputNumber[i]); 
     } 
    } 
} 

这是它们的更好的解决方案吗?请提出建议,或者这是做到这一点的唯一最佳解决方案。如何将数字逗号分隔的字符串转换为int数组

这个问题的主要目的是找到最好的解决方案。

+0

注:这个问题已经被[交叉张贴在代码审查(http://codereview.stackexchange.com/q/121756/9357)。 (没关系,但是请向其他用户声明交叉帖子。) –

的Java 8流提供了一个很好的和干净的解决方案:

String line = "1,2,3,1,2,2,1,2,3,"; 
int[] numbers = Arrays.stream(line.split(",")).mapToInt(Integer::parseInt).toArray(); 

编辑:既然你问了Java 7的 - 你做什么已经是相当不错的,我改变只是一个细节。您应该使用inputNumber.length初始化阵列,以便在输入String更改时您的代码不会中断。

编辑2:我也改变了命名的位,使代码更清晰。

String line = "1,2,3,1,2,2,1,2,3,"; 
String[] tokens = line.split(","); 
int[] numbers = new int[tokens.length]; 
for (int i = 0; i < tokens.length; i++) { 
    numbers[i] = Integer.parseInt(tokens[i]); 
} 
+0

谢谢我没有关于java 8,任何与java 7相关的解决方案。 –

+0

@PrabhatYadav我编辑了我的解决方案,但是你已经非常了解最好你可以在Java 7中做到 – MartinS

通过在Java 7中这样做,你可以先拿到String阵列,然后将其转换为int阵列:

String[] tokens = line.split(","); 
int[] nums = new int[tokens.length]; 

for(int x=0; x<tokens.length; x++) 
    nums[x] = Integer.parseInt(tokens[x]); 
+0

嗯是一个颇具创新性的解决方案 – shmosel

既然你不喜欢的Java 8,这里是最好的™使用一些番石榴公用事业解决方案:

int[] numbers = Ints.toArray(
     Lists.transform(
       Splitter.on(',') 
         .omitEmptyStrings() 
         .splitToList("1,2,3,1,2,2,1,2,3,"), 
       Ints.stringConverter()));