2015-12-17 4 views
0

Так что я пытался исправить это самостоятельно, но я не нашел достаточно информации по этому вопросу.Массив связанного списка Java

В следующем коде, есть функция, которая принимает массив в связанного списка (целое число), массив является представлением квадрата, что имеет черные и белые квадраты внутри (1 = белый, 0 = черный), формат следующий: первый узел связанного списка белый, каждый следующий следующий узел - это противоположный цвет последнего узла. Например, если квадрат : белый -> белый -> белый -> черный -> белый -> черный -> черный связанный список будет 3 -> 1 -> 1 -> 2 -> null (если есть последовательные цвета, которые они суммируют в связанном списке, как видно ранее). Так мой код следующий:

public static int[][] restorePicture (LinkedList[] linked_list) 
{ 
    boolean black = false; 
    int[][] Input = new int [(linked_list.length)][]; 

    for(int k = 0; k < linked_list.length; k++) 
     Input[k] = new int[linked_list[k].size()]; 

    for(int i = 0;i < linked_list.length; i++) 
    { 
     black = false; 
     int j = 0; 
     while(linked_list[i].get(j) != linked_list[i].getLast()) 
     { 
      if(black == false) 
      { 
       for(int z = (int) linked_list[i].get(j); z > 0 ;z--) 
        Input[j++][i] = 1; 

       black = true; 
      } 

      if(black == true) 
      { 
       for(int x = (int) linked_list[i].get(j); x > 0 ;x--) 
        Input[j++][i] = 0; 

       black = false; 
      } 
     } 
    } 

    for(int i = 0; i < Input.length; i++) 
     for(int j = 0; j < Input[j].length; j++) 
      System.out.println(Input[i][j]); 

    return Input; 
} 

enter image description here

+0

Почему бы не показать нам всю ошибку? Кроме того, отступ вашего кода – Idos

+1

Пожалуйста, отформатируйте код. –

+1

Есть ли декларация класса? Что-то вроде «public class Test {« перед функциями? – Daniel

ответ

3

я предполагаю, что вы вызовите метод «restorePicture» с простым LinkedList вместо массива из LinkedList. Вот почему вы получаете сообщение об ошибке.

Проверьте вызов метода в строке 10 вашего кода. Скомпилировать заявления об ошибках в Eclipse очень хорошо.

Предупреждение, которое вы получаете, поскольку вы не указываете тип LinkedList, поэтому вам нужно изменить определение параметра на.

public static int[][] restorePicture (LinkedList<Integer>[] linked_list) 

Чтобы создать новый массив LinkedList вы должны кода

LinkedList<Integer>[] linked_list = new LinkedList[input.length]; 
+0

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

+0

Я думаю, что код OP всегда будет вызывать 'OutOfBoundsException', потому что во внутреннем цикле он' j ++ 'дважды –

+0

Спасибо, человек, последний маленький вопрос, если бы я был инициализировать массив связанного списка, например: LinkedList linked_list [] = новый LinkedList [input.length] (); Что было бы правильным способом написать его, потому что это неправильно, спасибо – Boris