- 数组反转
- 数组扩容
直接反转和逆序赋值反转两种方法
int arr [] = {1, 2, 3, 4, 5, 6, 7};
// 第一种方法:直接反转,即首位元素互换
// fou循环需要遍历(数组长度/2)次
int temp = 0;
for (int i = 0; i < arr.length/2; i++) {
temp = arr[arr.length-1-i];
arr[arr.length-1-i] = arr[i];
arr[i] = temp;
}
// 数组以字符串形式输出
System.out.println(Arrays.toString(arr));
-----------------------------------------------------------------------------------------------
// 第二种方法:逆序赋值,新建一个数组,逆序遍历对其赋值
//1. 先创建一个新的数组 arr2 ,大小 arr.length //
//2. 逆序遍历 arr ,将 每个元素拷贝到 arr2 的元素中(顺序拷贝)
//3. 建议增加一个循环变量 j -> 0 -> 6
int arr2 [] = new int [arr.length];
for (int i = arr.length-1, j = 0; i >= 0; i--,j++) {
arr2[j] = arr[i];
}
// 让 arr 指向 arr2 数据空间, 此时 arr 原来的数据空间就没有变量引用 ,会被当做垃圾,销毁
arr = arr2;
// 数组以字符串形式输出
System.out.println(Arrays.toString(arr));
2⃣️数组扩容
实现动态的给数组添加元素效果,实现对数组扩容。
// 动态数组扩容
// 1. 定义初始数组 int[] arr = {1,2,3}//下标 0-2
int [] arr = {1, 2, 3};
Scanner myScanner = new Scanner(System.in);
do {
// 2. 定义一个新的数组 int[] arrNew = new int[arr.length+1];
int [] arrNew = new int [arr.length+1];
// 3. 遍历 arr 数组,依次将 arr 的元素拷贝到 arrNew 数组
for (int i = 0; i < arr.length; i++) {
arrNew[i] = arr[i];
}
System.out.println("请输入要添加的整数:");
int addNum = myScanner.nextInt();
// 4. 将 addNum 赋给 arrNew数组 最后一个元素,
arrNew[arrNew.length-1] = addNum;
// 5. 让 arr 指向 arrNew ; arr = arrNew; 那么 原来 arr 数组就被销毁
arr = arrNew;
// 6. 创建一个 Scanner 可以接受用户输入
System.out.println("是否要继续往数组中添加元素: y or n ?");
char flag = myScanner.next().charAt(0);
if (flag == 'n') {
System.out.println(Arrays.toString(arr));
break;
}
// 7. 因为用户什么时候退出,不确定,所以使用 do-while + break 来控制 */
}while(true);



