Java ArrayList string length string

My exercise:

Create a length method that takes a list of String variables as a parameter and returns an ArrayList that contains the lengths of the strings in the same order as the original list.

And my code:

import java.util.ArrayList;

public class Test {

public static ArrayList<Integer> lengths(ArrayList<String> strings) {
        ArrayList<Integer> list = new ArrayList<Integer>();

        for (String item : strings) {
            System.out.print(item.length());
        }
        return list;
    }

public static void main(String[] args) {

ArrayList<String> list = new ArrayList<String>();

        list.add("Dog");
        list.add("Elephant");
        list.add("Aligator");
        list.add("Parrot");

        ArrayList<Integer> stringLenghts = lengths(list);
        System.out.println(stringLenghts);

    }
}

      

And this program outputs

3386 []

Instead

[3, 3, 8, 6]

Any idea where I am making the mistake?

+3


source to share


4 answers


In your method, lengths()

you just print the length values. But you are NOT adding lengths to ArrayList

ie, your list is stringLenghts

empty (so print as []

an empty array), so change your code like below:



public static ArrayList<Integer> lengths(ArrayList<String> strings) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        for (String item : strings) {
            list.add(item.length());//add length to list
        }
        return list;
}

      

+3


source


Try it.

import java.util.ArrayList;

public class Test {

public static ArrayList<Integer> lengths(ArrayList<String> strings) {
    ArrayList<Integer> list = new ArrayList<Integer>();

    for (String item : strings) {
        list.add(item.length());
    }
    return list;
}

public static void main(String[] args) {

ArrayList<String> list = new ArrayList<String>();

    list.add("Dog");
    list.add("Elephant");
    list.add("Aligator");
    list.add("Parrot");

    ArrayList<Integer> stringLenghts = lengths(list);
    System.out.println(stringLenghts);

}
}

      



EDIT: The lengths method creates a list, but you don't add any elements to it. Now in the content of the code for (String item: strings) {list.add (item.length ()); } This adds the length of each line to a new ArrayList that you return to the main print method. In the meantime, there is no need to know about it. ”

thank

+3


source


You need to fix this loop and add numbers here

list.add(item.length());

      

between brackets.

+2


source


First you print the length of each line from the loop

for(String item : strings) {
     System.out.print(item.length());
}

      

which outputs: 3386 (no newline due to printing)

After this empty ArrayList is printed, because you are returning an empty arrayList object.

System.out.println(stringLenghts);

      

which outputs: []

Solution:
You must replace System.out.print(item.length());


with
list.add(item.length());

+2


source







All Articles