为了账号安全,请及时绑定邮箱和手机立即绑定

使用用户输入对双精度数组进行插入排序 - JAVA

使用用户输入对双精度数组进行插入排序 - JAVA

牧羊人nacy 2023-06-08 20:21:19
我的任务是使用插入排序等排序方法,根据用户输入按降序排列双精度(或浮点)数组。我试过在整个代码中操纵数字值。它不断抛出“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]))


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信