/**
* 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));
}