练习题:
创建方法lengths
,该方法获取String变量的列表作为参数,并返回一个ArrayList,其中ArrayString的长度与原始列表的顺序相同。
给定对象的输出应为:
The lengths of the Strings: [5, 3, 10, 27]
我的代码:
import java.util.ArrayList;
public class LengthsOfStrings {
public static ArrayList<Integer> lengths(ArrayList<String> list) {
ArrayList<Integer> lengthList = new ArrayList<Integer>();
int count = 0;
for (String word : list) {
for (int x = 0; x < ( list.get(x) ).length(); x++) {
count++;
}
lengthList.add(count);
count = 0;
}
return lengthList;
}
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Ciao");
list.add("Moi");
list.add("Benvenuto!");
list.add("badger badger badger badger");
ArrayList<Integer> lengths = lengths(list);
System.out.println("The lengths of the Strings: " + lengths);
}
}
线程“主”中的异常java.lang.IndexOutOfBoundsException:索引: 4,大小:4
... at java.util.ArrayList.rangeCheck(ArrayList.java:657)
在java.util.ArrayList.get(ArrayList.java:433)
at LengthsOfStrings.lengths(LengthsOfStrings.java:11)
在LengthsOfStrings.main(LengthsOfStrings.java:26)
答案 0 :(得分:0)
就像在另一个答案中说的那样,您仅使用length()
方法,但是至于您遇到的错误是因为list
没有索引x
,因为x
是字符串的长度,在您的测试用例中,字符串长度超过3,例如“ Benvenuto!”
解决此问题
for (String word : list) {
for (int x = 0; x < ( list.get(x) ).length(); x++) {
到
for (String word : list) {
for (int x = 0; x < word.length(); x++) {