Печать строк строк 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());

между скобками.

Другие вопросы по тегам