我是Java的新手,正在运行下面的代码,它运行得很好,但是我得到了一个数组索引超出了界限的异常。有人能帮我理解一下为什么我会得到这个例外吗?
public class array {
public static void main (String[] args)
{
int[] b = {1,2,3,4};
array ar = new array();
ar.process(b);
}
public int process (int[] a)
{
int i;
System.out.println("Length is: " +a.length);
for(i = 0; i < a.length ; i++) {
System.out.println("A is : " + a[i] + " I is" +i);
}
return a[i];
}
}
Exception
Length is: 4
A is : 1 I is0
A is : 2 I is1
A is : 3 I is2
A is : 4 I is3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at array.process(array.java:17)
at array.main(array.java:7)
当返回语句运行时,for循环已经完成,因此i
等于数组a
的长度(比有效索引多一个)。更改return语句,如
return a[a.length - 1]; // <-- for the last element in the array.
当然,您没有使用返回的值,因此您可以使方法无效,并且不返回任何东西。由于不使用任何实例字段,您还可以使方法成为静态的(那么您就不需要array
的实例...Java的命名惯例是将类名大写,但请不要将类命名为array
)。
问题是这一行:
return a[i];
因为它在for
循环之外,而i变成了4。
你可以做到:
return a[i-1];
要修复它,但您需要澄清为什么要将数组的最后一个元素作为返回值返回。
因此错误消息如下: 我的代码为 错误在 但我认为数组索引在指针递增后用代码检查ok。是数组越界异常还是其他什么?通常,如果是数组,则错误为。这里的问题似乎是什么?
在此输入图像描述 这是我的代码,我试图解决它5个小时,但我没有得到什么问题,任何人都可以帮助。我也检查了资源,但代码与源代码相同,但它没有运行。
问题内容: 在我的游戏代码中,我尝试添加一张手牌。一旦我做完了,我的数组就超出了范围。一切看起来都不错,但也许我缺少了一些东西。 仅供参考,一个和两个是Player实例。来自Main类的相关代码(对格式感到抱歉。我很想将其传输到Stack Overflow): 卡类: 玩家等级: 问题答案: 问题出在你的循环上 没有其他任何值可设置,因此此循环不断循环,直到所有玩家拥有超过52张牌为止。一旦某人拥
这是我的代码: 该程序的目的是要求用户输入一个字符串,然后统计字符串中每个字符的使用次数。 当我去编译程序时,它工作正常。当我运行程序时,我可以在弹出框中输入字符串,但是在我提交字符串并按确定后,我得到一个错误,说 我不完全确定问题是什么或如何解决。
这似乎微不足道,但也许我对向量的理解并不是它应该是的。我在这段代码上得到[java.lang.ArrayIndexOutOfBoundsException:Array index out of range:1]。错误发生在第3行。既然look是基于向量的大小,那么数组怎么会越界呢? 方法“getChangeSets()”返回一个列表。该列表最初是作为向量创建的。