尚硅谷

it2025-03-14  22

多维数组的使用

package com.atguigu.exer; public class ArrayExer1 { public static void main(String[] args) { int[][] arr = new int[][] {{3,5,8},{12,9},{7,0,6,4}}; int sum = 0; for(int i=0;i<arr.length;i++) { for(int j=0;j<arr[i].length;j++) { sum += arr[i][j]; } } System.out.println(sum); } } package com.atguigu.exer; /* * 使用二维数组打印一个10行的杨辉三角 */ public class YangHuiTest { public static void main(String[] args) { //1.声明并初始化二维数组 int[][] yangHui = new int[10][]; //2.给数组的元素赋值 for(int i=0;i<yangHui.length;i++) { yangHui[i] = new int[i+1]; //首末元素赋值 yangHui[i][0] = 1; yangHui[i][i] = 1; for(int j=1;j<yangHui[i].length-1;j++) { yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j]; } } //3.遍历 for(int i=0;i<yangHui.length;i++) { for(int j=0;j<yangHui[i].length;j++) { System.out.print(yangHui[i][j] + "\t"); } System.out.println(); } } } package com.atguigu.java; /* * 算法的考查, 求数值型数组中元素的最大值、最小值、平均数、总和等 * * 定义一个int型的一维数组,包含10个元素,分别随机赋一些整数。 * 然后求出所有元素的最大值、最小值、和值、平均值、并输出出来。 * 要求,所有随机数都是两位数。 * * [10, 99] * int(Math.random()*(99 - 10 + 1) + 10 ) */ public class ArrayTest1 { public static void main(String[] args) { int[] arr = new int[10]; for(int i=0; i<10;i++) { arr[i] = (int)(Math.random()*(99 - 10 + 1) + 10); } //遍历 for(int i=0; i<arr.length;i++) { System.out.print(arr[i] + "---"); } System.out.println(); //最大值 int maxValue = arr[0]; for(int i=1; i<arr.length;i++) { if(maxValue < arr[i]) { maxValue = arr[i]; } } System.out.println("最大值为:" + maxValue); //最小值 int minValue = arr[0]; for(int i=1; i<arr.length; i++) { if(minValue > arr[i]) { minValue = arr[i]; } } System.out.println("最小值为:" + minValue); //总和 int sum = 0; for(int i=0; i<arr.length; i++) { sum += arr[i]; } System.out.println("总和为:" + sum); //平均数 int avgValue = sum/arr.length; System.out.println("平均数为:" + avgValue); } } package com.atguigu.exer; /* * 使用简单数组 * 1、创建一个名为ArrayExer2的类,在main()方法中声明Array1和Array2 * 两个变量,它们是int[]类型的数组。 * 2、使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19. * 3、显示array1的内容 * 4、赋值array2变量等于array1,修改array2的偶索引,使其索引值(如 * array[0]=0, array[2]=2),打印array1. * * array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体。 */ public class ArrayExer2 { public static void main(String[] args) { int[] array1, array2; array1 = new int[]{2,3,5,7,11,13,17,19}; for(int i=0; i<array1.length; i++) { System.out.print(array1[i]+"\t"); } array2 = array1; for(int i=0; i<array2.length;i++) { if(i%2==0) { array2[i] = i; } } System.out.println(); for(int i=0; i<array1.length;i++) { System.out.print(array1[i] + "\t"); } } } package com.atguigu.java; /* * 算法的考查,数组复制、反转、查找(线性查找、二分查找) */ public class ArrayTest2 { public static void main(String[] args) { String[] arr = new String[] {"JJ","DD", "BB"}; //数组的复制 String[] arr2 = new String[arr.length]; for(int i=0;i<arr2.length;i++) { arr2[i] = arr[i]; } //数组的反转 //方式一: // for(int i=0; i< arr.length/2;i++) { // String temp = arr[i]; // arr[i] = arr[arr.length - i - 1]; // arr[arr.length -i - 1] = temp; // } //方式二: for(int i=0, j=arr.length-1;i<j;i++,j--) { String temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } //遍历 for(int i=0;i<arr.length;i++) { System.out.print(arr[i] + "\t"); } // 查找(或搜索) // 线性查找 System.out.println(); String dest = "CC"; boolean isFlag = true; for(int i=0; i<arr.length; i++) { if(dest.equals(arr[i])) { System.out.println("找到了指定的元素,位置为:"+i); isFlag = false; break; } } if(isFlag) { System.out.println("很遗憾,没有找到!"); } //二分法查找 //前提:所要查找的数组必须有序。 int[] arr3 = new int[] {-98, -34, 2, 6, 8, 88,190}; int dest1 = -34; dest1 = 34; int head = 0; //初始首索引 int end = arr3.length - 1; //初始的末索引 boolean isFlag1 = true; while(head <= end) { int middle = (head + end)/2; if(dest1 == arr3[middle]) { System.out.println("找到了指定的元素,位置为:"+middle); isFlag1 = false; break; }else if(arr3[middle] > dest1) { end = middle - 1; }else { head = middle + 1; } } if(isFlag) { System.out.println("很遗憾,没有找到!"); } } } package com.atguigu.java; /* * 数组的冒泡排序的实现 * */ public class BubnleSortTest { public static void main(String[] args) { int[] arr = new int[] {43, 32,76, -98, 0, 64, 33,43}; //冒泡排序 for(int i=0; i<arr.length-1; i++) { for(int j=0; j<arr.length-1-i; j++) { if(arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for(int i=0; i<arr.length;i++) { System.out.print(arr[i] + "\t"); } } }

Arrays工具类的使用

package com.atguigu.java; import java.util.Arrays; /* * java.util.Arrays:操作数组的工具类,里面定义了很多操作数组的方法 */ public class ArraysTest { public static void main(String[] args) { //1.boolean equals(int[] a, int[] b):判断两个数组是否相等 int[] arr1 = new int[] {1,2,3,4}; int[] arr2 = new int[] {1,2,4,2}; boolean isEquals = Arrays.equals(arr1, arr2); System.out.println(isEquals); //2.String toString(int[] a):输出数组信息 System.out.println(Arrays.toString(arr1)); //3.void fill(int[] a, int val):将指定的值填充到数组之中 Arrays.fill(arr1, 10); System.out.println(Arrays.toString(arr1)); //4.void sort(int[] a):对数组进行排序 Arrays.sort(arr2); System.out.println(Arrays.toString(arr2)); //5.int binarySearch(int[] a, int key) int index = Arrays.binarySearch(arr2, 210); // System.out.println(index); if(index >= 0) { System.out.println(index); }else { System.out.println("未找到"); } } }

数组使用中的常见异常

1、数组角标越界的异常,ArrayIndexOutOfBoundsException2、空指针异常,NullPointerException
最新回复(0)