我写了那种代码
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
错误
意图是找到用户在数组中选择的最后一个数字。
答案 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
结束