java 18 练习题:数组

文章目录

        • 练习1:遍历二维数组int a[][] = {{23.65,43,68},{45,99,86,80},{76,81,34,45},{88,64,48,25}}后,再通过循环计算该二维数组的两条对角线之和。
        • 练习2:一个3×3的网格,将从1到9的数字放入方格,达到能够使得每行每列以及每个对角线的值相加都相同。
        • 练习3:交换二维数组 int array[][] = {{8,75,23},{21,534},{15,23,20 }};的行、列数据。
        • 练习4:使用二维数组实现杨辉三角算法。

练习1:遍历二维数组int a[][] = {{23.65,43,68},{45,99,86,80},{76,81,34,45},{88,64,48,25}}后,再通过循环计算该二维数组的两条对角线之和。
public class GetSum {// 创建GetSum类
	public static void main(String args[]) {
		// 初始化int类型的二维数组
		int a[][] = {{ 23, 65, 43, 68 }, 
					 { 45, 99, 86, 80 }, 
					 { 76, 81, 34, 45 }, 
					 { 88, 64, 48, 25 }};
		System.out.println("原始数组如下:");// 控制台输出提示信息
		for (int i = 0; i < a.length; i++) {// 遍历二维数组
			for (int j = 0; j < a[i].length; j++) {
				System.out.print(a[i][j] + " ");
			}
			System.out.println();
		}
		int sum1 = 0;// 声明int类型的变量sum1(求一条对角线的和)
		int sum2 = 0;// 声明int类型的变量sum2(求另一条对角线的和)
		// 通过循环,获得元素的下标,并分别求出两条对角线的和
		for (int i = 0, j = a[i].length - 1; i < a.length; i++, j--) {
			sum1 += a[i][i];
			sum2 += a[i][j];
		}
		// 把两条对角线的和相加求和并输出
		System.out.println("对角线总和为:" + (sum1 + sum2));
	}
}

练习2:一个3×3的网格,将从1到9的数字放入方格,达到能够使得每行每列以及每个对角线的值相加都相同。

public class NineGrids {// 创建NineGrids类
	public static void main(String[] args) {
		// 声明int类型的数组并分配内存(三阶方阵)
		int arr[][] = new int[3][3];
		// 确定数字“1”的位置
		int a = 2;// 第3行的下标
		int b = 3 / 2;// 第2列的下标
		for (int i = 1; i <= 9; i++) {// 给数组赋值
			arr[a++][b++] = i;// 避免数组下标越界
			if (i % 3 == 0) {// 如果i是3的倍数
				a = a - 2;
				b = b - 1;
			} else {// 如果i不是3的倍数
				a = a % 3;
				b = b % 3;
			}
		}
		System.out.println("九宫格:");
		// 遍历数组
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < arr.length; j++) {
				System.out.print(arr[i][j] + " ");// 输出数组中的数据
			}
			System.out.println();// 换行
		}
	}
}

练习3:交换二维数组 int array[][] = {{8,75,23},{21,534},{15,23,20 }};的行、列数据。

public class SwapRC {// 交换二维数组的行列数据
	public static void main(String[] args) {
		int i, j;// 定义两个变量,分别用来作为行和列的循环变量
		// 初始化一个静态的int型二维数组
		int[][] array = { { 8, 75, 23 }, { 21, 55, 34 }, { 15, 23, 20 } };
		System.out.println("—————原始数组—————");// 提示信息
		// 遍历原始的二维数组
		for (i = 0; i < 3; i++) {
			for (j = 0; j < 3; j++) {
				System.out.print(array[i][j] + "\t");// 输出原始数组中的元素
			}
			System.out.println();// 换行
		}
		int temp;// 临时变量
		// 通过循环调换元素的位置
		for (i = 0; i < 3; i++) {
			for (j = 0; j < i; j++) {
				temp = array[i][j];// 把数组元素赋给临时变量
				// 交换行列数据
				array[i][j] = array[j][i];
				array[j][i] = temp;
			}
		}
		System.out.println("——调换位置之后的数组——");// 提示信息
		// 遍历调换位置之后的二维数组
		for (i = 0; i < 3; i++) {
			for (j = 0; j < 3; j++) {
				System.out.print(array[i][j] + "\t");// 输出调换位置后的数组元素
			}
			System.out.println();// 换行
		}
	}
}

练习4:使用二维数组实现杨辉三角算法。

public class YangHui {// 杨辉三角算法的实现
	public static void main(String[] args) {
		// 定义一个长度为10的二维数组
		int[][] Array_int = new int[10][];
		// 向数组中记录杨辉三角形的值
		for (int i = 0; i < Array_int.length; i++) {// 遍历行数
			Array_int[i] = new int[i + 1];// 定义二维数组的列数
			// 遍历二维数组的列数
			for (int j = 0; j < Array_int[i].length; j++) {
				if (i <= 1) {// 如果是数组的前两行
					Array_int[i][j] = 1;// 将其设置为1
					continue;
				} else {
					// 如果是行首或行尾
					if (j == 0 | j == Array_int[i].length - 1)
						Array_int[i][j] = 1;// 将其设置为1
					else// 根据杨辉算法进行计算
						Array_int[i][j] = Array_int[i - 1][j - 1] + Array_int[i - 1][j];
				}
			}
		}
		for (int i = 0; i < Array_int.length; i++) {// 输出杨辉三角
			for (int j = 0; j < Array_int[i].length; j++)
				System.out.print(Array_int[i][j] + "\t");
			System.out.println();
		}
	}
}

你可能感兴趣的:(Java技术专家,java18,算法,数据结构)