常见二维数组操作
常见二维数组操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/**
* 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));
}