Home > Software design >  How can I loop through a linked list and print each piece of data that matches the input?
How can I loop through a linked list and print each piece of data that matches the input?

Time:06-30

I'm working on this method but am running into an issue. When I enter a word that matches the data in an index of the linked list, it only prints the first index of the Linked List the same number of times that the word I entered appears in the entire linked list.

public void iteratePrint(T aData) {
        if (head == null) {
            return;
        }
        //Typecast aData to string, and make it lowercase.
        String a = (String)aData;
        String strInput = a.toLowerCase();

        //Create temp listnode to loop through.
        ListNode temp =  head;
        
        //While temp is not null, check for match and if so, print.
        while(temp != null) {

            //Typecast temp.data into string (all of the data is a string anyway) and
            //Make sure it is lowercase.
            String b = (String)temp.data;
            String strTemp = b.toLowerCase();
            
            //This checks for the match and prints the current line.
            //Not currently working
            if(strTemp.contains(strInput)){
                System.out.println(temp.getCurrent());
            }
            temp = temp.next;
        }
    }

For example: The linked list contains these as String data with their respective indices (balls bounce far, dogs play fetch with balls, my favorite toy is a ball). If I enter my input as "ball", I would like it to print out as

balls bounce far
dogs play fetch with balls
my favorite toy is a ball

However, it only prints out this:

balls bounce far
balls bounce far
balls bounce far

Ball appears 3 times, and it is only printing out the first index of the linked list the amount of times that the input appears.

CodePudding user response:

If strTemp.contains(strInput) is not satisfied temp = temp.next; will not get executed hence while loop will get stuck. Take temp = temp.next; outside of the if statement.

CodePudding user response:

I've solved the issue. The problem was with my getCurrent() method. It was returning current.data, when I needed to return my temp.data. Thanks to everyone who helped! I appreciate it.

  • Related