为什么会出现IndexOutOfBoundsException

时间:2018-10-25 23:19:30

标签: java

练习题:

创建方法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)

1 个答案:

答案 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++) {