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?
source to share
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;
}
source to share
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
source to share
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());
withlist.add(item.length());
source to share