升序冒泡排序java.lang.ArrayIndexOutOfBoundsException:5位于wst2.calc(wst2.java:18)
这是我制作的程序,我甚至做了一个从0到4的适当for循环,因为5个数字需要排序,仍然得到arrayindexoutofboundsexception升序冒泡排序java.lang.ArrayIndexOutOfBoundsException:5位于wst2.calc(wst2.java:18),java,for-loop,bubble-sort,Java,For Loop,Bubble Sort,这是我制作的程序,我甚至做了一个从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]; f
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],这是不允许的。您循环直到jSo应该更改哪一行?而不是使用4作为固定的循环确定值,您可以循环直到i将长度设置为5,因此5-1将给出4。这会有什么帮助呢?这里有一个例子,基本上一字不差地描述了你要做的事情:改变你的习惯