Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
升序冒泡排序java.lang.ArrayIndexOutOfBoundsException:5位于wst2.calc(wst2.java:18)_Java_For Loop_Bubble Sort - Fatal编程技术网

升序冒泡排序java.lang.ArrayIndexOutOfBoundsException:5位于wst2.calc(wst2.java:18)

升序冒泡排序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

这是我制作的程序,我甚至做了一个从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],这是不允许的。

您循环直到jSo应该更改哪一行?而不是使用4作为固定的循环确定值,您可以循环直到i将长度设置为5,因此5-1将给出4。这会有什么帮助呢?这里有一个例子,基本上一字不差地描述了你要做的事情:改变你的习惯