2013-07-31 4 views
0

Я хочу преобразовать строку с целыми числами в массив с целыми числами в Java. Как я могу это сделать? У меня есть массив со строками. Каждая строка является целым числом. Я хочу получить доступ к каждой строке одним нажатием кнопки.Как преобразовать строку с целыми числами в массив с целыми числами в java?

String[] INT_ARRAY={ 

     //0 
     "250,125,20,20,20,40,20,20,20,40,20,20,20,2500", 

     //1 
     "233,63,28,63,29,63,28,16,28,17,26,63,29,17,26,16.... 
        ........ 

       } 

    public void onClick(View v) { 

     counter++; 
     String IntString = INT_ARRAY[counter]; 

        String[] parts = IntString.split(","); 


      final int[] A = new int[parts.length()]; 

      for(int i=0; i<parts.length(); i++){ 

      A[i] = Integer.parseInt(parts(i)); 

          Toast.makeText(getApplicationContext(),String.valueOf(A[i]), Toast.LENGTH_SHORT).show(); 

     } 

    } 
+0

Довольно должны, как вы есть, но вы должны разделить строку на, – Leon

+0

почему вы не использовать целочисленный массив? –

+0

Почему ваша 'INT_ARRAY'' 'String []'? –

ответ

2
private Integer[] splitIntegers(String s){ 
     Object[] numbersAsString = s.split(","); 
     return Arrays.copyOf(numbersAsString, numbersAsString.length, Integer[].class); 
} 

Призвание:

for(String s: INT_ARRAY){ 
    Integer[] ints = splitIntegers(s); 
} 
+0

Почему вы предлагаете использовать 'Object []'? –

+0

Избегайте ClassCastException из-за downcast от String до Integer. String может быть объектом Object, Object может быть Integer, но String can not Integer (если не разобрано или опущено (если этого достаточно)] –

+0

Достаточно справедливо, я понял, что лучше разобрать или что у вас есть, но я думаю, это может быть просто быть слишком подробным без причины ... –

3

Вы должны String#spilt() разбить строку, что-то вроде:

String[] parts = "aa,bb,cc,dd".split(","); 

parts теперь состоит из {"aa", "bb", "cc", "dd"}.

Затем с помощью расширенного-цикла для перебора каждой части, что-то вроде:

for(String part : parts) Log.d("", part); 
3

Таким образом, у вас есть частично упорядоченное представление о том, что, как представляется, массив целочисленных массивов. Из вашего кода вы, очевидно, понимаете, что вам нужно использовать parseInt() для преобразования строкового представления целого числа в примитив int. Эта часть выглядит хорошо, но вам нужна логика для циклического прохождения каждого значения, разделенного запятыми, в каждой строке. Вы можете использовать метод split() для создания массива строк из списка, разделенного запятыми. Весь раствор будет выглядеть следующим образом:

public void onClick(View v) { 

    counter++; 
    String IntString = INT_ARRAY[counter]; 

    final String[] vals = IntString.split(","); // Here we split the comma-separated string 
    final int[] A = new int[vals.length]; 

    for(int i=0; i<vals.length; i++){ 
     A[i] = Integer.parseInt(vals[i]); 
     Toast.makeText(getApplicationContext(),String.valueOf(A[i]), Toast.LENGTH_SHORT).show(); 
    } 

} 
+0

спасибо! !! – user2342687

Смежные вопросы