Java ArrayList 字符串长度打印

3

我的练习是:

创建一个叫做"lengths"的方法,该方法接收一个字符串变量列表作为参数,并返回一个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]

有什么想法,我哪里出错了吗?


我不知道是谁给这个问题点了踩,但在我看来,这是一个很好的问题。仅仅因为提问者是初学者并不意味着这是一个糟糕的问题。 - mmaceachran
@mmaceachran,我不知道是谁点赞了那些研究不周且对除了提问者以外的其他人没有任何帮助的问题(这不是 Stack Overflow 的宗旨)。 - Tom
@Tom 对不起,我还不太会使用 StackOverflow。如果您有任何有用的建议,我将不胜感激。 - Mar
放心吧,正如你所看到的赞数,人们并不关心 Stack Overflow 的目的。他们只关心被喂养和获取声望。既然你今天注册了,应该已经阅读了需要了解的内容。或者你故意忽略了帮助中心和导览。 - Tom
@Tom,你对于在这个网站上发布话题有什么建议? - Mar
我的建议是你停止忽略那个帮助中心:http://stackoverflow.com/help/how-to-ask - Tom
4个回答

3
在你的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;
}

非常简单 :) 当然运行良好,非常感谢! - Mar

3

试一下这个。

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);

}
}

编辑:在lengths方法中,列表被创建,但您没有添加任何项。现在在代码中,对于(String item: strings){list.add(item.length());}这将每个字符串的长度添加到新的ArrayList中,您将返回它以供主要方法打印。

谢谢


在lengths方法中,正在创建列表,但您没有添加任何项。现在,在代码块中: for (String item : strings) { list.add(item.length()); } 这将把每个字符串的长度添加到新的ArrayList中,然后您将返回给主方法进行打印。 - Aritra Chatterjee
谢谢你的帮助。运行得很好! - Mar
编辑您的答案并将该评论添加到答案中 @AritraChatterjee - Sanket Makani

2
你需要修正这个循环的内容,并在此处添加数字。
list.add(item.length());

在括号内。


2

最初,您正在从循环中打印每个字符串的长度。

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

这段代码输出:3386(由于使用了print函数,没有新行)

因为你返回的是空的ArrayList对象,所以会打印出一个空的ArrayList。

System.out.println(stringLenghts);

输出为:[ ]

解决方案:
你需要将
System.out.print(item.length());
替换为
list.add(item.length());


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接