二维数组
二维数组其实就是每一个元素为一维数组的数组。
二维数组的格式1:
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组,必须写上,n表示每一个一维数组的元素个数,可写可不写。
举例:
int[][] arr = new int[3][2];
定义了一个二维数组arr,这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2],每个一维数组有2个元素,可以通过arr[m] [n]来获取。
还有两种不常用的格式:
a:数据类型 数组名[][] = new 数据类型[m][n];
b:数据类型[] 数组名[] = new 数据类型[m][n];
内存图解:
二维数组的格式2:
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出。
内存图解
案例演示:
public class ArrayDemo {
public static void main(String[] args) {
//定义二维数组
int[][] arr = new int[2][2];
System.out.println(arr[0]);
System.out.println(arr[1]);
//定义两个一维数组
int[] arrone = {10, 20, 30};
int[] arrrtow = {20, 100, 30};
//重新给二维数组中的元素赋值
arr[0] = arrone;
arr[1] = arrrtow;
//输出二维数组中的一维数组
ShowArray(arr[0]);
ShowArray(arr[1]);
//重新给二维数组中的元素赋值并输出
arr[1][2] = 300;
arr[1][arrrtow.length - 1] = 500;
System.out.println(arr[arr.length - 1][arrrtow.length - 1]);
System.out.println(arr.length);
}
public static void ShowArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
}
}
运行结果:
二维数组的遍历
外循环控制的是二维数组的长度,其实就是一维数组的个数。
内循环控制的是一维数组的长度。
public class Demo {
public static void main(String[] args) {
int[][] arr = new int[][]{{10, 20, 30}, {5, 6}, {6, 8}};
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
运行结果:
案例演示:
/*A:
案例演示
需求:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22, 66, 44
第二季度:77, 33, 88
第三季度:25, 45, 65
第四季度:11, 66, 99
*/
public class SumArray {
public static void main(String[] args) {
int[][] arr = new int[4][3];
int[] one = {22, 66, 44};
int[] two = {77, 33, 88};
int[] three = {25, 45, 65};
int[] four = {11, 66, 99};
arr[0] = one;
arr[1] = two;
arr[2] = three;
arr[3] = four;
//遍历二维数组的元素,累加求和
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);
}
}
运行结果:
案例演示:
/*
需求:打印杨辉三角形(行数可以键盘录入)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
*/
import java.util.Scanner;
public class Yang {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入行数:");
int n = sc.nextInt();
int[][] arr = new int[n][n];
for (int i = 0; i < arr.length; i++) {
arr[i][0] = 1;//每行的首元素为1
arr[i][i] = 1;//对角线为1
}
for (int i = 2; i < arr.length; i++) {
for (int j = 1; j <= i; j++) {
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}