Java 从末端开始的IndexAutofBond打印阵列

Java 从末端开始的IndexAutofBond打印阵列,java,indexoutofboundsexception,Java,Indexoutofboundsexception,我试图从最后一个元素读取数组到第一个元素,并在某些情况下更改它们。但我不知道为什么我会得到索引越界异常 public class Test { private Scanner scan = new Scanner ( System.in ); private int dimension; private int[] a; public int getDimension() { return dimension; } publ

我试图从最后一个元素读取数组到第一个元素,并在某些情况下更改它们。但我不知道为什么我会得到索引越界异常

public class Test
{
    private Scanner scan = new Scanner ( System.in );

    private int dimension;

    private int[] a;

    public int getDimension() {
        return dimension;
    }

    public void setDimension(int dimension) {
        this.dimension = dimension;
    }

    public Test(int dimension) {
        System.out.println("Add elements");
        setDimension(dimension);
        this.a = new int[this.dimension];
        for(int i = 0; i < this.dimension; i++)
            a[i] = scan.nextInt();
    }

    public void calc() {
        int aux = 0;
        for(int i = a.length-1; i >= 0; i--)
            if(a[i] > a[i-1]) {
                aux = a[i-1];
                a[i-1] = a[i];
                a[i] = aux;
            }
        for(int i = 0; i < getDimension(); i++)
            System.out.print(a[i] + " ");
    }

    public static void main(String[] args) {
        Test p = new Test(5);
        p.calc();
    }
}
公共类测试
{
专用扫描仪扫描=新扫描仪(System.in);
私有整数维;
私人机构【】a;
公共int getDimension(){
返回维度;
}
公共void集合维度(int维度){
这个维度=维度;
}
公共测试(整数维){
System.out.println(“添加元素”);
设置维度(维度);
this.a=新的int[this.dimension];
for(int i=0;i=0;i--)
如果(a[i]>a[i-1]){
aux=a[i-1];
a[i-1]=a[i];
a[i]=aux;
}
对于(int i=0;i
i=0
时,则指向
a[-1]


将其更改为(int i=a.length-1;i>0;i--)
,除非遇到
索引自动边界异常

时出现其他问题,否则它应该可以工作,请尝试打印您使用的索引。你最终会明白为什么你一开始就得到了它。
for(int i = a.length-1; i >= 0; i--)
    if(a[i]>a[i-1]){