将每个值添加到整数数组

时间:2013-12-10 18:19:54

标签: java

你能帮我解决我的问题吗?我需要为我的int数组添加值,但我得到的只是ArrayIndexOutOfBoundsException

public static void numberSort(){

    int quantity = 0;
    int[] values = new int[quantity];
    int allocate = 0;

    quantity = Integer.parseInt(JOptionPane.showInputDialog("How many values do you wish to sort? : "));

    for(int x = 0; x <= values.length; x++){
        allocate = Integer.parseInt(JOptionPane.showInputDialog("Values you want to sort : "));

        values[allocate] = x;

        System.out.println(values[x]);
    }

4 个答案:

答案 0 :(得分:2)

int quantity = 0;    
int[] values = new int[quantity];

您正在分配一个带有0位置的数组,这实际上是一个零长度数组。这意味着它确实没有任何有效位置,因此您无法在其中存储任何内容。这就是为什么当您尝试在数组中存储任何内容时,您会收到ArrayIndexOutOfBounds异常。

您需要将<{1}}分配到的行在您读取values值的行之后。

您的下一个问题是quantity循环:

for

数组索引从for(int x = 0; x <= values.length; x++) 0。因此,array.length - 1循环的终止条件通常为for。如果这是您的代码,您将不会看到此异常。但是,即使您修复此问题以使x < values.length成为非零值,当您尝试填充数组时,您将获得异常,因为quantity超出范围。因此,您必须将values[array.length]循环更改为:

for

我还注意到你有for(int x = 0; x < values.length; x++) 。你想要的是values[allocate] = x;,因为你想要数组的values[x] = allocate;元素。

答案 1 :(得分:2)

此行是您的问题

int quantity = 0;    
int[] values = new int[quantity];

您正在创建一个长度为0的数组。数组的长度是在创建数组时建立的。创建后,其长度是固定的。

在教程中阅读更多内容:Arrays

要快速修复代码,只需在数量

后启动数组
int quantity = Integer.parseInt(JOptionPane.showInputDialog("How many values do you wish to sort? : "));
int[] values = new int[quantity];

for for loop change <= to <导致数组从0开始。

for(int x = 0; x < values.length; x++){
 allocate = ...
 values[x] = allocate; // you want to allocate in position "x" allocate
}

答案 2 :(得分:0)

除了创建0长度的数组之外,for循环结束条件不正确。你写了x <= values.length,但你应该写x < values.length。由于Java中的数组是0索引的,这意味着索引的有效范围是0到values.length - 1.

答案 3 :(得分:0)

我在那里算了三个错误。最重要的一个:

for(int x = 0; x <= values.length; x++){

Java数组索引从零开始 - 这意味着例如length 5的数组具有索引012,{{ 1}}和3。在任一方向上超出该范围的任何内容都会产生4。因为您使用ArrayIndexOutOfBoundsException,所以您读取的值超出了允许范围。将其替换为<=

此外,您将数组初始化为大小为零。这意味着你无法真正使用它。只有<具有正确的值,才能使用quantity初始化数组!

最后,我相信你想quantity,反之亦然。