从Java中的数组中获取时出错

时间:2013-06-27 11:55:48

标签: java arrays indexoutofboundsexception

我写了那种代码

int[] count = new int[10];
int i = count.length;
int position = -1;
int num = kb.nextInt();

    while(i > 0)
    {
        if(count[i] == num)
        {
            position = i;
            break;
        }
         i--;
    }

但我收到java.lang.ArrayIndexOutOfBoundsException错误

意图是找到用户在数组中选择的最后一个数字。

7 个答案:

答案 0 :(得分:5)

您设置了i = count.length;。数组在java中从0开始索引,因此count[count.length]超出范围。数组a中的最后一个有效索引是a.length -1

答案 1 :(得分:4)

在第一次迭代中,您可以访问count[count.length]

数组是从零开始的,所以你应该初始化

int i = count.length-1;

答案 2 :(得分:4)

这是错误的:

int i = count.length;
...
while(i > 0)
{
  if(count[i] == num)//count[count.length] is out of bound. Maximum index is count.length-1

尝试

int i = count.length-1;
...
while(i >= 0)
{

答案 3 :(得分:2)

您的数组“count”的长度为10。 Java数组以索引0开头。因此最后一个元素的长度为1 = 9

你从i = count.length = 10开始。

count [10]将抛出该异常。

快速解决您的问题:

int i = count.length - 1;

答案 4 :(得分:1)

public class arra {
public static void main(String[] args) {
Scanner kb=new Scanner(System.in);
int[] count = new int[10];
int i = count.length-1;
int position = -1;
int num = kb.nextInt();

while(i > 0)
{
    if(count[i] == num)
    {
        position = i;
        break;
    }
     i--;
}
}
}

答案 5 :(得分:0)

您的第一个 i 值为10,这是您的数组的大小+1 - >导致IndexOutOfBoundException 迭代时,总是将1减去你想要的值:要访问“first”值,选择index 0,对于“last”,index为9;)

答案 6 :(得分:0)

这是对的:

 int[] count = new int[10];
    int i = count.length;
    int position = -1;
    int num = kb.nextInt();

    while(i > 0)
    {
        i--;
        System.out.println(i);
        if(count[i] == num)
        {
            position = i;
            break;
        }

    }

该数组由10个项目组成,从0开始到9

结束