如果我把d--,为什么它会在使用java的插入排序中出现异常;刷卡前的声明

如果我把d--,为什么它会在使用java的插入排序中出现异常;刷卡前的声明,java,Java,你可以把d-;交换后的语句。 如果在交换之前执行。查找跟踪 d=0 i=1,d=1(i的值) 在while(1(d的值)>0&&arr[0(d-1)]>arr[1])条件中为true d--;(d具有0值) temp=arr[0-1](访问arr中的1个元素) 但是数组绑定从0开始到array.length-1。您的代码包含 iteration 1: 让我们假设d的值是1。您将进入while{}循环。然后你将从d中减去1,这意味着d现在是0 然后尝试获取位置0-1=-1处的数组成员-1不是有

你可以把d-;交换后的语句。 如果在交换之前执行。查找跟踪

d=0

i=1,d=1(i的值)

在while(1(d的值)>0&&arr[0(d-1)]>arr[1])条件中为true

d--;(d具有0值)

temp=arr[0-1](访问arr中的1个元素)

但是数组绑定从0开始到array.length-1。

您的代码包含

iteration 1: 
让我们假设d的值是1。您将进入while{}循环。然后你将从d中减去1,这意味着d现在是0


然后尝试获取位置0-1=-1处的数组成员-1不是有效的索引,因为数组从0(零)开始。

d=1
d-->0
arr[d-1]
…这如何回答问题?我有一个基于跟踪代码的代码更正。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
    at javaapplication28.JavaApplication28.main(JavaApplication28.java:23)
C:\Users\ASUS™\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
iteration 1: 
while(d>0 && arr[d-1]>arr[d]){
              d--; 
              int temp=arr[d-1];