2015-05-11 5 views
0

Хорошо, я ударил кирпичную стену, и он убивает меня в течение двух дней, и я не в курсе. В принципе, у меня есть программа, которая получает данные с сервера с использованием API компаний. Данные вернутся хорошо, и я могу превратить его в массив без проблем. Однако мне нужен вторичный массив, созданный из значений в этом массиве. Позвольте мне показать вам:Создание 2D-массива из каждого 5-го элемента другого массива

Data Recieved and Parsed into Array: 
String[] tag data = {d1,d2,d3,d4,d5,d6,d7,d8,d9,d10} <-----these are populated automatically by the program. 

Что я должен был бы еще один массив, созданный скажем d1-d5, а затем d6-d10, я попытался для петель и этажерки, но проблема в том, что печатает только первые пять раз.

Вот код, который я до сих пор:

String[][] tags = null; 

try { 
    //Data is a string var that is passed to this method.It is the return data from the URL. 
    data = data.substring(61, data.length()); 
    String[] tagname = data.split(";"); 
    String[] secondArray = new String[5]; 
    for(int x = 0; x <= tagname.length; x++) { 
     for(int i = 0; i <= 5; i++) { 
      secondArray[i] = tagname[x]; 
     } 
     tags[x] = secondArray; 
    } 
    Data.setTagArray(tags); 
} catch(Exception e) { 
    e.printStackTrace(); 
} 

Это данные я получаю обратно:

["Lamp_Status", null, null, null, null] 
["Lamp_Status", 1, null, null, null] 
["Lamp_Status", 1, 0, null, null] 
["Lamp_Status", 1, 0, 0, null] 
["Lamp_Status", 1, 0, 0, 654722] 

мне не нужен конкретный ответ, который я просто нужна помощь в правильное направление. Я не уверен, что здесь происходит или как я могу это сделать. Еще раз повторю, мне нужно создать массив из 1-5, 6-10 элементов другого массива.

+0

Где вы используете многомерный массив. вы каждый раз переписываете один и тот же массив. многомерный массив выглядит как arr [row] [column]. надеюсь, что это помогает –

+0

Да, я пропустил эту строку. Добавлен для повторной проверки. Теги массива [] [] - это 2d-массив, который должен быть заполнен элементами массива второго массива после создания. Проблема, однако, в том, что она повторяет элементы 1-5, я не могу ее пропустить. – basic

+0

@xXspynXx Индексы Java начинаются с нуля - поэтому ваш первый массив имеет индексы 0-4, а второй массив имеет индексы 5-9 –

ответ

1

Вы можете попробовать

String[][] secondArray = new String[(tagname.length)/5][5]; 
for(int x = 0; x<=(tagname.length)/5; x++){ 
    for(int i = 0; i <= 5; i++) 
     secondArray[x][i] = tagname[x]; 
} 
+0

Я получаю исключение из пределов границ при использовании этого кода. – basic

+0

сделал небольшое изменение, вы можете попробовать сейчас –

+0

Ваш код меня почти достал. Единственная проблема заключалась в том, что X во втором цикле повторял одно и то же значение, потому что цикл еще не увеличивался. Я сделал одно изменение, и BOOM это сработало. Вы - чемпион, спасибо, что указали мне в правильном направлении. – basic

0
String[][] tags = null; 

try { 
    // Data is a string var that is passed to this method.It is the 
    // return data from the URL. 
    tags = new String[2][5]; 
    String[] tagname = {"d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "d10"}; 
    String[] secondArray = new String[5]; 

    tags[0] = Arrays.copyOfRange(tagname, 0, 5); 
    tags[1] = Arrays.copyOfRange(tagname, 5, 10); 
    System.out.println(Arrays.toString(tags[0])); 
    System.out.println(Arrays.toString(tags[1])); 
} catch(Exception e) { 
    e.printStackTrace(); 
} 

Или скопируйте диапазоны вам нужно.

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