0

So I have been trying to fix this by myself but I didn't find enough info on the subject.

In the next code, there is a function that receives an array of a linked list (Integer), the array is a representation of a square that has black and white squares inside (1 = white, 0 = black), the format is the next one: The first node of the linked list is white, every next node is the opposite color of the last node. For example if the square is: white -> white -> white -> black - > white - > black -> black the linked list would be 3 -> 1 -> 1 -> 2 -> null (if there are consecutive colors they sum up in the linked list as seen before). So my code is the next:

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

Khaled.K
  • 5,516
  • 1
  • 30
  • 47
Boris
  • 65
  • 1
  • 1
  • 8

1 Answers1

3

i assume that you call the method 'restorePicture' with a simple LinkedList instead an Array of LinkedList. Thats why you get the error.

Check the method call at line 10 in your code. Compile error statements in Eclipse are quiet good.

The warning you get because you do not specify the type of LinkedList, so you have to change the parameter definition to.

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

To create a new Array of LinkedLIst you have to code

LinkedList<Integer>[] linked_list = new LinkedList[input.length];
Markus Lausberg
  • 11,892
  • 6
  • 38
  • 65
  • I don't have any more errors, just a warning now. I'm not quite sure what you mean by what you said – Boris Dec 17 '15 at 07:45
  • I think the OP code will always throw `OutOfBoundsException`, because in the inner loop he does `j++` twice – Khaled.K Dec 17 '15 at 08:02
  • Thanks man, a last small question, if I were to initialize an array of a linked list for example: LinkedList linked_list[] = new LinkedList[input.length](); what would be the correct way to write it because that is wrong, thanks – Boris Dec 17 '15 at 08:06
  • 1
    @Boris ``@SuppressWarnings({"unchecked"}) LinkedList[] list = new LinkedList[length];`` is the correct way. [Welcome to java generics](http://stackoverflow.com/questions/7131652/generic-array-creation-error). – Binkan Salaryman Dec 17 '15 at 08:27
  • @BinkanSalaryman sorry for the noob questions, thank you for your answers I fixed everything, thank you very much. – Boris Dec 17 '15 at 09:02
  • 1
    @Boris The sentence "welcome to java generics" points to java's [type erasure](https://docs.oracle.com/javase/tutorial/java/generics/erasure.html), which is a failure in design - your question is fine. – Binkan Salaryman Dec 17 '15 at 09:05