【问题标题】:How to resolve "java.lang.IndexOutOfBoundsException" error? [duplicate]如何解决“java.lang.IndexOutOfBoundsException”错误? [复制]
【发布时间】:2015-08-06 02:54:47
【问题描述】:

这是我的代码。它是一个随机字符串生成器。当我运行它时,如果加在一起的字母和字符数少于所需的位数,我会收到如下所示的错误代码。有人可以帮我解决这个问题吗?

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class list {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Random num = new Random();
        System.out.println("How many characters do you want?");
        Scanner Digits = new Scanner(System.in);
        int digits = Integer.parseInt(Digits.nextLine());
        System.out.println("How many different numbers do you want? 1-10 please");
        int number = Integer.parseInt(Digits.nextLine());
        System.out.println("Which letters do you want? One at a time, press enter after each letter. If done, just press enter.");
        List<String> characters = new ArrayList<String>();
        while (true) {
            System.out.println("Add your characters.");
            String character = Digits.nextLine();
            if (character.equals("")) {
                break;
            } else {
                characters.add(character);
            }
        }

        List<Object> andrew = new ArrayList<Object>();
        for (int x = 0; x < digits; x++) {
            andrew.add(num.nextInt(number));
            andrew.add(characters.get(x));
        }

        for (int x = 0; x < andrew.size(); x += 2) {
            System.out.print(andrew.get(x));
        }
    }
}

例外:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at list.main(list.java:33)

【问题讨论】:

    标签: java


    【解决方案1】:

    当您尝试从超出其大小的数组中选择一个值时,会出现IndexOutOfBoundsException。在此示例中,您尝试获取 [3] 处的值。您可以从堆栈跟踪中读取很多内容:

    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    

    Java 中的数组从索引[0] 开始,而不是索引[1],因此长度为3 的数组将只有索引[0][1][2]

    当数组仅扩展到[2] 时,尝试获取[3] 的值将导致此错误。

    但是,关于问题出在哪里,另一个答案实际上是错误的。堆栈跟踪显示它位于第 33 行,即:

    andrew.add(characters.get(x));
    

    【讨论】:

      猜你喜欢
      • 2012-05-14
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 2021-10-11
      • 2020-07-07
      • 2021-08-04
      相关资源
      最近更新 更多