常见二维数组操作

/**
 * 1)(使用输入值初始化数组)下面的循环使用用户输入值初始化数组:
 * 
 */
public static void inputIntialize() {
	int[][] matrix = new int[3][3];
	Scanner input = new Scanner(System.in);
	System.out.print("1)使用输入值初始化数组:");
	for (int row = 0; row < matrix.length; row++) {
		for (int column = 0; column < matrix[row].length; column++) {
			matrix[row][column] = input.nextInt();
		}
	}
	input.close();
	System.out.println(Arrays.deepToString(matrix));
}
/**
 * 2)(使用随机值初始化数组)下面的循环使用0 到99 之间的随机值初始化数组:
 */
public static void randomIntialize() {
	int[][] matrix = new int[3][3];
	System.out.print("2)使用随机数初始化数组:");
	for (int row = 0; row < matrix.length; row++) {
		for (int column = 0; column < matrix[row].length; column++) {
			matrix[row][column] = (int) (Math.random() * 100);
		}
	}
	System.out.println(Arrays.deepToString(matrix));
}
/**
 * 3)(打印数组)为打印一个二维数组,必须使用如下所示的循环打印数组中的每个元素:
 */
public static void printMatrix() {
	int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
	System.out.println("3)打印二维数组{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }:");
	// 采用嵌套循环打印数组
	for (int row = 0; row < matrix.length; row++) {
		for (int column = 0; column < matrix[row].length; column++) {
			System.out.print(matrix[row][column] + " ");
		}
		System.out.println();
	}
	// 采用Arrays.deepToString(Object[] a)打印数组
	System.out.println(Arrays.deepToString(matrix));
}
/**
 * 4)(求所有元素的和)使用名为sum的变量存储和。将sum初始化为0。利用类似下面的循环,把数组中的每一个元素都加到sum上:
 */
public static void sumMatrix() {
	int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
	int sum = 0;
	for (int row = 0; row < matrix.length; row++) {
		for (int colum = 0; colum < matrix[row].length; colum++) {
			sum += matrix[row][colum];
		}
	}
	System.out.println("4)求二维数组{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }所有元素的和:" + sum);
}
/**
 * 5)(对数组按列求和)对于每一列,使用名为sum的变量存储它的和。利用类似下面的循环,将该列中的每个元素加到sum上:
 */
public static void sumColumnMatrix() {
	int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
	System.out.println("5)求二维数组{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }所有列元素的和:");
	for (int column = 0; column < matrix[0].length; column++) {
		int sum = 0;
		for (int row = 0; row < matrix.length; row++) {
			sum += matrix[row][column];
		}
		System.out.println(sum);
	}
}
/**
 * 6)(哪一行的和最大?)使用变量maxRow和indexOfMaxRow分别跟踪和的最大值以及该行的索引值。
 * <P>
 * 计算每一行的和,如果计算出的新行的和更大,就更新maxRow和indexOfMaxRow。
 */
public static void maxRow() {
	int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
	System.out.println("6)计算二维数组{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }最大行的和以及该行的索引值:");
	int maxRow = 0;
	int indexOfMaxRow = 0;
	// 计算第一行的和
	for (int column = 0; column < matrix[0].length; column++) {
		maxRow += matrix[0][column];
	}
	System.out.println(maxRow);
	for (int row = 1; row < matrix.length; row++) {
		int totalOfThisMax = 0;
		for (int column = 0; column < matrix[row].length; column++) {
			totalOfThisMax += matrix[row][column];
		}
		System.out.println(totalOfThisMax);
		if (totalOfThisMax > maxRow) {
			maxRow = totalOfThisMax;
			indexOfMaxRow = row;
		}
	}
	System.out.println("最大行的和的索引值:" + indexOfMaxRow + ",最大行的和:" + maxRow);
}
/**
 * 7)(随意打乱)对每个元素matrix[i][j], 随机产生下标i1和j1,然后互换matrix[i][j]和matrix[i1][j1], 如下所示:
 */
public static void shuffleMatrix() {
	int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
	for (int i = 0; i < matrix.length; i++) {
		for (int j = 0; j < matrix[i].length; j++) {
			int i1 = (int) (Math.random() * matrix.length);
			int j1 = (int) (Math.random() * matrix[i].length);
			// 用matrix[i1][j1]交换matrix[i][j]
			int temp = matrix[i][j];
			matrix[i][j] = matrix[i1][j1];
			matrix[i1][j1] = temp;
		}
	}
	System.out.println("7)随意打乱二维数组{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }:" + Arrays.deepToString(matrix));
}
posted @ 2018-03-15 09:55  微微_echo  阅读(933)  评论(0编辑  收藏  举报