感觉数组的运用还是得靠大量的实操练习才能深刻理解,像遍历取大小值和反转查下标这种系统本身就有提供现成的方法,但不通过方法就能实现功能的练习还是很必要的,这些会加强你对数组的理解。下面就罗列了些常用的方法和一些数组的练习
根据数组中的索引值的改变,一个一个的访问数组中的元素,再把每个元素都打印出来
package Chating; public class Shuzu { public static void main(String[] args) { //数组的遍历 int[] arr = {1,2,3,4,5}; for(int i = 0; i < arr.length; i++) {//数组的长度 arr.length System.out.print(arr[i]+" ");//把元素都打印出来,每个中间加空格 } } }给定一个数组,求出数组的最大值
思路:擂台思想
预设一个默认最大值max当做擂主,数组中所有元素为挑战者,通过遍历与max一一挑战比较大小,如果数组中元素比max大,就把该元素的值赋值给max,否则不做任何操作,进行下一组的比较,循环结束max存储的就是最大值
package Chating; public class Shuzu { public static void main(String[] args) { int[] arr = {11,257,0,99}; int max = 0;//预设最大值max for(int i = 0; i < arr.length; i++) {//遍历数组 一个一个与max比较大小 if (max<arr[i]) {//如果max比数组元素小 max = arr[i];//数组元素赋值给max } } System.out.println("最大值为"+max);//循环结束max储存的就是最大值 } }与获取最大值同理,把预设的最大值max变成最小值min,再通过遍历与数组元素进行比较,如果数组元素比min小,就赋值给min,否则不做任何操作,进行下一组的比较,循环结束min即为最小值
package Chating; public class Shuzu { public static void main(String[] args) { int[] arr = {11,257,0,99}; int min = 0;//预设最小值min for(int i = 0; i < arr.length; i++) {//遍历数组 一个一个与min比较大小 if (min>arr[i]) {//如果min比数组元素大 min = arr[i];//数组元素赋值给min } } System.out.println("最小值为"+min);//循环结束min储存的就是最小值 } }元素前后的交换 如{1,2,3,4} — {4,3,2,1}
思路:
预设个数值t做中间交换值
把首位值(arr[0])赋值给t做储存
再把末位值(arr[arr.lenght])赋值给首位值
最后把储存在t中的首位值赋值给末位值(arr[arr.lenght])
完成前后位数组的交换,通过遍历完成整个数组的交换
注意:前一位的遍历坐标必须小于后位的坐标,否则如果数组中的元素数量是偶数,前位坐标大于后位坐标,就会重新交换回原样
package Chating; public class Shuzu { public static void main(String[] args) { int[] arr = {11,257,0,99}; for (int i = 0,j = arr.length-1; i<j;i++,j--) {//i为第一位的坐标,j为末位坐标,根据循环递增减 //前一位的遍历坐标必须小于后位的坐标 i<j int t = arr[i];//预设中间数t被赋值保存第一位的数值 arr[i] = arr[j];//把末位的数值赋值给第一位 arr[j] = t;//把t中保存的第一位的数值赋值给末位 } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } } }指定元素数值,从数组中找出坐标
package Chating; import java.util.Scanner; public class Shuzu { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入要查询的元素:"); int num = sc.nextInt(); int index = 0;//定义一个变量,用于接收索引值 int[] arr = {34,0,6,208}; for(int i = 0; i < arr.length; i++) { if(num == arr[i]) {//判断输入的数值是否与数组中的元素相同 index = i;//如果有相同的数值就输出坐标 System.out.println("数组中该元素的索引为: " + i); break; } if (i==arr.length-1) {//表示遍历完数组全部长度没有找出相同数值 System.out.println("查无此元素"); } } } }