问题:在指定数组arr={99,88,77,66,55}中插入一个数字并使之保持降序。并取出相应的下标,最后输出整个数组的所有值
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));