我的任务是使用插入排序等排序方法,根据用户输入按降序排列双精度(或浮点)数组。我试过在整个代码中操纵数字值。它不断抛出“Index -1 out of bounds for length 50”public static void main(String args[]) { int size, i, j; Double temp; Double arr[] = new Double[50]; Scanner scan = new Scanner(System.in); System.out.print("Enter Number of Elements : "); size = scan.nextInt(); System.out.print("Enter the Elements : "); for(i=0; i<size; i++) { arr[i] = scan.nextDouble(); } for(i=0; i<size; i++) { temp = arr[i]; j = i - 1; while((temp <= arr[j]) && (j >= 0)) { arr[j+1] = arr[j]; j = j - 1; } arr[j+1] = temp; } System.out.print("Elements Sorted : \n"); for(i=0; i<size; i++) { System.out.print(arr[i] + " "); } }}
1 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
问题在这里:
j = i - 1;
while((temp <= arr[j]) && (j >= 0))
j >= 0问题是您在尝试使用它访问元素之前没有检查确定arr,因此在第一次运行您正在访问的循环时arr[-1],因此出现错误。
在大多数具有类似表达式的语言中expr1 && expr2,如果 expr1 符合条件为 false,则不会计算 expr2。
正确的代码如下所示:
j = i - 1;
while((j >= 0) && (temp <= arr[j]))
添加回答
举报
0/150
提交
取消