猿问

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

我的任务是使用插入排序等排序方法,根据用户输入按降序排列双精度(或浮点)数组。


我试过在整个代码中操纵数字值。它不断抛出“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] + "  ");

       }

   }

}


牧羊人nacy
浏览 118回答 1
1回答

汪汪一只猫

问题在这里: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]))
随时随地看视频慕课网APP

相关分类

Java
我要回答