2016-03-03 3 views
-2
//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). (Это нормально, но, пожалуйста, объявляйте перекрестные сообщения как любезность другим пользователям.) –

ответ

1

Java 8 потоков предлагают приятный и чистый раствор:

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

Edit: Так как вы просили 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

0

Делая это в 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

1

Поскольку вам не нравится Java 8, вот лучший ™ решение с помощью некоторых утилит гуавы:

int[] numbers = Ints.toArray(
     Lists.transform(
       Splitter.on(',') 
         .omitEmptyStrings() 
         .splitToList("1,2,3,1,2,2,1,2,3,"), 
       Ints.stringConverter())); 
Смежные вопросы