测试开发全栈重新拾起Java核心基础(7)继续做习题,从基础开
今天继续做一道比较简单的题目,就是: /* 数组元素的反转: 要求是在同一个数组中 本来的样子: [1,2,3,4] 之后的样子: [4,3,2,1] */
如果新建一个数组,让这个新数组去承载老数组的反转,其实还算是比较容易的,来直接上代码: package demo15; public class One { /* 数组元素的反转: 要求是在同一个数组中 本来的样子: [1,2,3,4] 之后的样子: [4,3,2,1] */ public static void firstMethod(int[] array){ //如果是使用一个新的数组 int[] newArray = new int[array.length]; if (array.length == 0){ System.out.println("请勿输入空数组,请重新输入"); return; } for (int i = 0; i < array.length; i++) { newArray[i] = array[array.length-1-i]; } System.out.print("新的数组为: "); for (int num:newArray ) { System.out.print(num + " "); } } public static void main(String[] args){ //将数组作为参数传入进去,但是需要 new一个 firstMethod(new int[]{}); } }
这里我们需要先判断下,如果传入的数组为空,其实就没有意义了。会直接提示: 请勿输入空数组,请重新输入
这时候,如果输入数组 {1,2,3,4}
可以看到返回了 {4,3,2,1}
如果是在本数组中反转,就需要循环了,代码如下: package demo15; public class Two { /* 数组元素的反转: 要求是在同一个数组中 本来的样子: [1,2,3,4] 之后的样子: [4,3,2,1] */ public static void firstMethod(int[] array){ int temp = 0; for (int i = 0; i < array.length/2; i++) { temp = array[i]; array[i] = array[array.length - 1 - i]; array[array.length - 1 - i] = temp; } System.out.println("被交换后的数组为: "); for (int num:array ) { System.out.print(num + " "); } } public static void main(String[] args){ int[] array = new int[]{1,2,3,4}; firstMethod(array); } }
这里一定要注意一点,就是i < array.length/2
为什么要除以2呢,其实这个需求就是数组的前半部分和后半部分数值进行交换。所以到了中间点的时候,就需要停止了。如果继续交换下去,相当于又交换回来了。大家可以试下 i < array.length 上代码 package demo15; public class Two { /* 数组元素的反转: 要求是在同一个数组中 本来的样子: [1,2,3,4] 之后的样子: [4,3,2,1] */ public static void firstMethod(int[] array){ int temp = 0; for (int i = 0; i < array.length; i++) { temp = array[i]; array[i] = array[array.length - 1 - i]; array[array.length - 1 - i] = temp; } System.out.println("被交换后的数组为: "); for (int num:array ) { System.out.print(num + " "); } } public static void main(String[] args){ int[] array = new int[]{1,2,3,4}; firstMethod(array); } }
输入数组 {1,2,3,4}后,就会发现运行结果为 {1,2,3,4} 没有变化
好了,今天就先到这里了