Code Review Stack Exchange is a question and answer site for peer programmer code reviews. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top
//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 > declear 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]);
  }
 }

}

Is there a more efficient solution to achieve the same result?

share|improve this question
2  
Duplicated from SO: stackoverflow.com/q/35764996/3207406 – oliverpool Mar 3 at 7:12

Basic improvements

  1. Instead of setting the size of the int array to 10, it would be better to derive the right size from the size of String array
  2. Instead of int number[] the more conventional way to write is int[] number
  3. For structures that contain multiple values it's more natural to give plural names, for example "number" -> "numbers" for an array of numbers
  4. The variable names are very poor in general, and should be improved to better reflect their purpose, making the code easier to understand

Something like this:

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

Split to logical steps

It's good to get into the habit of decomposing tasks to their small steps. That is, instead of having all the logical steps in a single main method, it would be better to split to multiple functions, for example:

static int[] toIntArray(String[] arr) {
    int[] ints = new int[arr.length];
    for (int i = 0; i < arr.length; i++) {
        ints[i] = Integer.parseInt(arr[i]);
    }
    return ints;
}

static int[] parseLineToIntArray(String line) {
    return toIntArray(line.split(","));
}

public static void main(String[] args) {
    String line = "1,2,3,1,2,2,1,2,3,";
    System.out.println(Arrays.toString(parseLineToIntArray(line)));
}
share|improve this answer

You code is not properly indented and IMO your comments don't add any value. You could create a separate function instead of putting everything in the main function. Also you could add an extra parameter so you can specify the delimiter instead of always being ",".

Also if you can use java 8 this becomes even more trivial:

public static int[] toIntArray(String input, String delimiter) {

   return  Arrays.stream(input.split(delimiter))
                 .mapToInt(Integer::parseInt)
                 .toArray();
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.