升序冒泡排序 java.lang.ArrayIndexOutOfBoundsException:5 在 wst2.calc(wst2.java:18)
Ascending Order Bubble sort java.lang.ArrayIndexOutOfBoundsException: 5 at wst2.calc(wst2.java:18)
这是我编写的程序,我什至做了一个从 0 到 4 的适当的 for 循环,因为需要对 5 个数字进行排序,仍然得到 arrayindexoutofboundsexception。
import java.util.*; class wst2 {
public static void calc()
{
Scanner sc= new Scanner(System.in);
int i,j , temp;
int a[]=new int [5];
for(i=0;i<=4;i++)
{
System.out.println("Enter 5 numbers");
a[i]=sc.nextInt();
}
for(i=0;i<=4;i++)
{
for(j=i;j<=4-i;j++)
{
if(a[j] > a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<=4;i++)
{
System.out.println(a[i]);
}
} }
这条语句int a[]=new int [5];
定义了一个长度为5的数组。
对于长度为 5 的数组,您可以访问索引形式为 0 到 4 ({0, 1, 2, 3, 4}
) 的元素。
但是在这一行
a[j]=a[j+1];
在可能的特定情况下(j = 4
和 i = 0
),您正在尝试访问不允许的 a[4+1]
(即 a[5]
)。
这是我编写的程序,我什至做了一个从 0 到 4 的适当的 for 循环,因为需要对 5 个数字进行排序,仍然得到 arrayindexoutofboundsexception。
import java.util.*; class wst2 {
public static void calc()
{
Scanner sc= new Scanner(System.in);
int i,j , temp;
int a[]=new int [5];
for(i=0;i<=4;i++)
{
System.out.println("Enter 5 numbers");
a[i]=sc.nextInt();
}
for(i=0;i<=4;i++)
{
for(j=i;j<=4-i;j++)
{
if(a[j] > a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<=4;i++)
{
System.out.println(a[i]);
}
} }
这条语句int a[]=new int [5];
定义了一个长度为5的数组。
对于长度为 5 的数组,您可以访问索引形式为 0 到 4 ({0, 1, 2, 3, 4}
) 的元素。
但是在这一行
a[j]=a[j+1];
在可能的特定情况下(j = 4
和 i = 0
),您正在尝试访问不允许的 a[4+1]
(即 a[5]
)。