2015-12-23 7 views
-1
for (int k = 0; k < dec2.length; k++) { 
    System.out.println(dec2[k]); 
    String[] tab = dec2[k].split(","); 
    System.out.println(tab[0]); 

Когда я пытаюсь этот код, dec2 это строковый массив, содержащий:Расщепление строк в массив строк не работает должным образом

41,31
11,21
42,41
12,22

Когда я пытаюсь отобразить tab[0], я получаю первое число (до ""), но tab[1] возвращает ArrayIndexOutOfBoundsException, и я не понимаю почему, поскольку он должен содержать 2-е число (после «,»).

+0

Это действительно звучит, как он должен работать. Ваш 'System.out.println (dec2 [k])' действительно печатает данный список? – Chriki

+0

похоже, '' 'не является фактической запятой. –

+3

Нет проблем с кодом. Где вы обращаетесь к 'tab [1]'? – SMA

ответ

0

Попробуйте это решение:

for(int k = 0 ; k < dec2.length ; k++){ 

     System.out.println(dec2[k]); 
     String [] tab = dec2[k].split(","); 
     for (String string : tab) { 
      System.out.print(string+" "); 
     } 
     System.out.println(); 

} 

создать foreach цикл для перебора массива tab к exract как число, например:

for (String string : tab) { 
      System.out.print(string+" "); 
     } 

Выход:

41,31 
41 31 
11,21 
11 21 
42,41 
42 41 
12,22 
12 22 

И если вы хочу использовать exact index попробуй это, ты получишь то же самое Выход:

for(int k = 0 ; k < dec2.length ; k++){ 

     System.out.println(dec2[k]); 
     String [] tab = dec2[k].split(","); 
      System.out.print(tab[0]+" "); 
      System.out.print(tab[1]); 
     System.out.println(); 

    } 
+0

Хотя это работает, я думаю, что OP найдет основную проблему, такую ​​как плохо отформатированный ввод. Я чувствую, что это относится к симптому, а не к причине. –

+0

Когда я просто печатаю его так же, как и вы, все работает, но когда я пытаюсь получить доступ к точному индексу вкладки, он, похоже, не работает, я не понимаю почему. – FreeRide

+0

@BBaldwin Я тестировал его с точным индексом и, похоже, работал, см. Ответ выше – Abdelhak

1
String[] dec2 = new String[] {"41,31", "11,21", "42,41", "12,22"}; 
for(int k = 0 ; k < dec2.length ; k++) { 

    System.out.println(dec2[k]); 
    String[] tab = dec2[k].split(","); 


    System.out.println(tab[0]); 
    System.out.println(tab[1]); 
} 

Я получил этот результат:

41,31 
41 
31 
11,21 
11 
21 
42,41 
42 
41 
12,22 
12 
22 

Process finished with exit code 0 

Нет исключений.

Вы можете попробовать, прежде чем tab.length Чек получить элементы по индексу, или использовать forEach цикл:

for(int k = 0 ; k < dec2.length ; k++) { 

    System.out.println(dec2[k]); 
    String[] tab = dec2[k].split(","); 

    for (String part : tab) { 
     System.out.println(part); 
    } 
} 
+0

http://meta.stackoverflow.com/questions/277923/are-your-code-works-fine-for-me-answers-acceptable – Tom

+0

Том, мой пост содержит ответ, а не только «ваш код отлично работает для меня». – Kirill

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