我的任務是使用插入排序等排序方法,根據用戶輸入按降序排列雙精度(或浮點)數組。我試過在整個代碼中操縱數字值。它不斷拋出“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
提交
取消