Печать строк строк Java ArrayList
Моя тренировка:
Создайте методы length, которые получают список переменных String в качестве параметра и возвращают ArrayList, который содержит длины строк в том же порядке, что и исходный список.
И мой код:
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);
}
}
И эта программа выводит
3386[]
Вместо
[3, 3, 8, 6]
Есть идеи, где я делаю ошибку?
4 ответа
В вашем lengths()
Метод, вы просто печатаете значения длины. Но вы НЕ добавляете длины к ArrayList
т. е. ваш stringLenghts
список пуст (так что печать как []
пустой массив), поэтому измените код, как показано ниже:
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;
}
Попробуй это.
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);
}
}
РЕДАКТИРОВАТЬ: В методе длины список создается, но вы не добавляете в него никаких элементов. Теперь в коде обитель для (String item: strings) { list.add(item.length()); } Это добавляет длину каждой строки в новый ArrayList, который вы вернете в метод main для печати.
Спасибо
Первоначально вы печатаете длину каждой строки из цикла
for(String item : strings) {
System.out.print(item.length());
}
который выводит: 3386 (нет новой строки из-за печати)
После этого пустой ArrayList печатается, потому что вы возвращаете пустой объект arrayList.
System.out.println(stringLenghts);
какие выводы: [ ]
Решение:
Вы должны заменить System.out.print(item.length());
сlist.add(item.length());
Вам нужно исправить это тело цикла и добавить сюда числа
list.add(item.length());
между скобками.