我尝试编写一些排序,即使我的代码中没有语法或逻辑错误,编译时我得到的异常似乎与排序方法有关:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at triBulle.bulle(triBulle.java:35)
at triBulle.main(triBulle.java:64)
这是我的代码:
public static void bulle(int[] T)
{
int n = T.length;
boolean echange = true ;
while((n>0) && (echange))
{
echange = false ;
for(int j = 0 ; j<n ; j++)
{
if(T[j] >T[j+1])
{
int tmp = T[j];
T[j] = T[j+1];
T[j+1] = tmp;
echange = true ;
}
}
n = n-1;
}
}
感谢您查看此内容。
答案 0 :(得分:1)
如果我错了,有人会纠正我,但我确信在java中,元素[0],[1]和[2]的数组的length
为3.所以在你的while-loop,如果j
等于length-1
,那么这是最后一个索引。因此,当[j+1]
被调用时,您会得到ArrayIndexOutOfBoundsException
解决问题的一种方法是
for(int j = 1 ; j<n ; j++)
{
if(T[j-1] >T[j])
或
for(int j = 0 ; j<n-1 ; j++)
{
if(T[j] >T[j+1])