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));
标签:arr,下标,11.19,int,冒泡排序,length,arr2,数组 来源: https://www.cnblogs.com/fang0317/p/15576515.html