JAVA数组下标越界异常

public class T1 {

public static void main(String[] args) {

int[] x={5,4,8,3,9,7,6};
T1 t=new T1();
t.a(x);
}

private void a(int[] x) {
for(int i=1;i<x.length;i++)
{
for(int j=0;j<x.length-1;j++)
{
if(x[i]>x[i+1])
{
int map=x[j];
x[j]=x[j+1];
x[j+1]=map;
}
}
}
showA(x);
}

public void showA(int[] x)
{
for(int i:x)
{
System.out.print(">"+i);

}
System.out.println();
}
}

这是为什么呢,那里错了,请大神指教

if(x[i]>x[i+1])

数组长度是length。就是从0开始一直到length-1位置。你这i+1。当i=length-1的时候,没有i+1的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-12-12
if (x[i] > x[i + 1]) 这一句当i=6的时候,i+1=7,你说会不会越界

为什么java的数组下标越界是运行时异常而不是受检异常,为
若忽视异常信息,仅通过代码定位问题,效率低下。正确做法是首先查看异常信息,如案例中的`ArrayIndexOutOfBoundsException`,表明数组下标越界。异常位置位于数组测试类的第四行。检查该行代码,发现访问了数组中下标为5的元素,而数组定义的下标范围是0至4,因此发生越界。数组下标范围由其特性决定,通常从...

Java初学最容易犯的错!数组下标越界异常如何解决呢?
数组下标越界是Java初学者常见错误。以一个简单的数组为例,若使用超出范围的下标,程序会抛出ArrayIndexOutOfBoundsException异常。正确处理方式是首先查看异常信息,定位问题所在。对于该案例,异常出现在第四行,即访问了数组下标为5的元素,而数组下标范围为0至4,导致越界。数组下标范围由基本特性决定,是...

数组下标越界异常怎么解决?
另外数组一般都是与for循环结合起来用,所以用的的时候要注意一下它的循环条件。数组下标越界异常:Java.lang.ArrayIndexOutOfBoundsException,这是一个非常常见的异常,从名字上看是数组下标越界错误,解决方法就是查看为什么下标越界。这种错误就是字符串索引越界。当处理数组越界时,打印出遍历数组的索引十...

JAVA 数组下标越界问题
你的循环条件错了。因为数组的索引下标是从0开始的。如果定义了一个长度为3的数组int[] a=new int[3];它里面的数据存放在a[0],a[1],a[2] 中 如果在有一个a[3] 就错了。所以你的循环条件要改一改 改成 for(int i=0;i<x;i++) 或者是 for(int i=0;i<=x-1;i++) 就好使...

java数组下标越界是什么异常
应该是非受查异常,此异常是编码控制能力之内能搞定的异常,一旦出现此异常说明程序编写就有问题,因此系统不推荐捕获。不捕获编译能通过,但运行直接报错。

在java开发中遇到string index out of range:4 这是什么原因
在java开发中遇到string index out of range:4 的原因一般是数组下标越界。学习java开发推荐千锋教育!在java开发中遇到的常见的难点还有java.lang.nullpointerexception,这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常...

java 数组下标越界异常 因为算法是这样,i-1出现小于0的情况,如何让程序...
那你何不把for循环改成for(i = 1;i<=array.length;i++){for(j = 1;j<=array.length;j++)}呢?反正i= 0和j = 0时那段代码的循环都执行不了,如果实在不行,还可以加个if判断啊,就是当i或j等于0时跳出循环continue不就得了。

java 中java.lang.IndexOutOfBoundsException一般是什么异常呢
该异常通常是指数组下标越界异常。例如:一个ArrayList数组中没有元素,而你想获取第一个元素,运行是就会报此类型的错误。案例如下:

大家帮我看看这道Java程序,到底是哪里出问题了?打印不出3行3列的星星...
ArrayIndexOutOfBoundsException是下标越界异常,错误提示不是指第三行,而是第16行。那个3表示下标出现了3,而你定义的数组下标最大的只能是2,所以出现了下标越界异常。如果是想打印出三行三列的星星可以把代码改成这样:public static void main(String[] args) { int i ,j;for(i=0;i<3;i++)...

Java 编写程序,对数组下标越界的异常进行处理。
public static void main(String args[]){ String[] str={"1","2"};try { System.out.println(str[3]);} catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界");} }

相似回答