11.19下標越界問題,氣泡排序問題
阿新 • • 發佈:2021-11-19
問題:在指定陣列arr={99,88,77,66,55}中插入一個數字並使之保持降序。並取出相應的下標,最後輸出整個陣列的所有值
2021-11-1911:50:42
1,建立了一個新的陣列arr2,原基礎上容量+1
1 int[] arr = {99,85,82,63,60}; 2 int[] arr2 = new int[arr.length+1]; 3 Scanner sc = new Scanner(System.in); 4 System.out.println("請輸入新增成績:"); 5 int num = sc.nextInt();
2,將原陣列的值賦給新陣列
迴圈的次數i不能超過陣列的下標大小,否則會發生下標越界問題
(在這裡一直報錯,我修改了i的迴圈條件解決了這個問題)
for (int i = 0; i < arr.length; i++) { arr2[i] = arr[i]; } arr2[arr2.length-1] = num; arr = arr2; int num1 = 0;
3,氣泡排序
這裡使用了氣泡排序,for迴圈裡面又增加了一個內迴圈
(這裡的邏輯我思考了很久,就好比大小兩個機械運作齒輪,帶動運轉)
內迴圈用來迴圈陣列內的大小比較
外迴圈用來迴圈次數
兩層迴圈下使陣列進行升序或者降序的排列
for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length-1; j++) { if (arr[j] < arr[j+1]) { num1 = arr[j]; arr[j] = arr[j+1]; arr[j+1] = num1; } } }
4,取出陣列下標
這裡沒有碰到什麼問題,一個迴圈取出相應的下標就可以了
最後輸出相應的需求
for (int i = 0; i < arr.length; i++) { if (num == arr[i]) { System.out.println("插入成績的下標是:"+i); } } System.out.println("插入後的成績資訊是:"); System.out.println(Arrays.toString(arr));