二维数组格式1
<span style="color: #ff0000;">格式1:
数据类型[][] 数组名 = new 数据类型[m][n];
m:表示这个二维数组有多少个一维数组。
n:表示每一个一维数组的元素有多少个。</span>
注意:
A:以下格式也可以表示二维数组
a:数据类型 数组名[][] = new 数据类型[m][n];
b:数据类型[] 数组名[] = new 数据类型[m][n];
B:注意下面定义的区别
int x;
int y;
int x,y;
int[] x;
int[] y[];
int[] x,y[];//这个x是一维数组,y是二维数组
<span style="color: #008000;">*/<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Demo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #ff0000;">//定义一个二维数组
int[][] arr = new int[3][2];
<span style="color: #008000;">//<span style="color: #008000;">定义了一个二维数组arr
<span style="color: #008000;">//<span style="color: #008000;">这个二维数组有3个一维数组的元素
<span style="color: #008000;">//<span style="color: #008000;">每一个一维数组有2个元素
<span style="color: #008000;">//<span style="color: #008000;">输出二维数组名称
System.out.println(arr); <span style="color: #008000;">//<span style="color: #008000;">地址值 [[I@175078b
<span style="color: #008000;">//<span style="color: #008000;">输出二维数组的第一个元素一维数组的名称
System.out.println(arr[0]); <span style="color: #008000;">//<span style="color: #008000;">地址值 [I@42552c
System.out.println(arr[1]); <span style="color: #008000;">//<span style="color: #008000;">地址值 [I@e5bbd6
System.out.println(arr[2]); <span style="color: #008000;">//<span style="color: #008000;">地址值 [I@8ee016
<span style="color: #008000;">//<span style="color: #008000;">输出二维数组的元素
System.out.println(arr[0][0]); <span style="color: #008000;">//<span style="color: #008000;">0
System.out.println(arr[0][1]); <span style="color: #008000;">//<span style="color: #008000;">0
<span style="color: #000000;"> }
}
格式1内存图解:
二维数组格式2
m:表示这个二维数组有多少个一维数组。
列数没有给出,可以动态的给。这一次是一个变化的列数。
<span style="color: #008000;">*/<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Demo2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">定义数组
<span style="color: #0000ff;">int[][] arr = <span style="color: #0000ff;">new <span style="color: #0000ff;">int[3<span style="color: #000000;">][];
System.out.println(arr); </span><span style="color: #008000;">//</span><span style="color: #008000;">[[I@175078b</span>
System.out.println(arr[0]); <span style="color: #008000;">//</span><span style="color: #008000;">null</span>
System.out.println(arr[1]); <span style="color: #008000;">//</span><span style="color: #008000;">null</span>
System.out.println(arr[2]); <span style="color: #008000;">//</span><span style="color: #008000;">null
</span><span style="color: #ff0000;">//动态的为每一个一维数组分配空间</span>
arr[0] = <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">int</span>[<span style="color: #ff0000;">2</span><span style="color: #000000;">];
arr[</span>1] = <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">int</span>[3<span style="color: #000000;">];
arr[</span>2] = <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">int</span>[1<span style="color: #000000;">];
System.out.println(arr[</span>0]); <span style="color: #008000;">//</span><span style="color: #008000;">[I@42552c</span>
System.out.println(arr[1]); <span style="color: #008000;">//</span><span style="color: #008000;">[I@e5bbd6</span>
System.out.println(arr[2]); <span style="color: #008000;">//</span><span style="color: #008000;">[I@8ee016</span>
<span style="color: #000000;">
System.out.println(arr[0][0]); <span style="color: #008000;">//<span style="color: #008000;">0
System.out.println(arr[0][1]); <span style="color: #008000;">//<span style="color: #008000;">0
<span style="color: #ff0000;">//ArrayIndexOutOfBoundsException
//System.out.println(arr[0][2]); //错误
<span style="color: #000000;">
arr[1][0] = 100<span style="color: #000000;">;
arr[1][2] = 200<span style="color: #000000;">;
}
}
二维数组格式2 内存图解:
Feed158dc0e0e85e3945db1185.png" alt="">
二维数组格式3
举例:
<span style="color: #ff0000;"> int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};</span>
int[][] arr = {{1,5},{6}};
<span style="color: #008000;">*/<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Demo3 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">定义数组
<span style="color: #0000ff;">int[][] arr = {{1,{6<span style="color: #000000;">}};
System.out.println(arr);
System.out.println(arr[</span>0<span style="color: #000000;">]);
System.out.println(arr[</span>1<span style="color: #000000;">]);
System.out.println(arr[</span>2<span style="color: #000000;">]);
System.out.println(arr[</span>0][0]); <span style="color: #008000;">//</span><span style="color: #008000;">1</span>
System.out.println(arr[1][0]); <span style="color: #008000;">//</span><span style="color: #008000;">4</span>
System.out.println(arr[2][0]); <span style="color: #008000;">//</span><span style="color: #008000;">6</span>
<span style="color: #000000;">
System.out.println(arr[0][1]); <span style="color: #008000;">//<span style="color: #008000;">2
System.out.println(arr[1][1]); <span style="color: #008000;">//<span style="color: #008000;">5
<span style="color: #008000;">//<span style="color: #008000;">越界
System.out.println(arr[2][1]); <span style="color: #008000;">//<span style="color: #008000;">错误
<span style="color: #000000;"> }
}
二维数组格式3 内存图解:
遍历二维数组
外循环控制的是二维数组的长度,其实就是一维数组的个数。
内循环控制的是一维数组的长度。
<span style="color: #008000;">*/<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Test {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">定义一个二维数组
<span style="color: #0000ff;">int[][] arr = {{1,9<span style="color: #000000;">}};
</span><span style="color: #008000;">//</span><span style="color: #008000;">用<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>改进
</span><span style="color: #008000;">//</span><span style="color: #008000;"><a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a><a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a></span>
<span style="color: #000000;"> printArray2(arr);
}
</span><span style="color: #008000;">/*</span><span style="color: #008000;">
需求:遍历二维数组
两个明确:
返回值类型:void
参数列表:int[][] arr
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> printArray2(<span style="color: #0000ff;">int</span><span style="color: #000000;">[][] arr) {
</span><span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> x=0; <span style="color: #ff0000;">x<arr.length</span>; x++<span style="color: #000000;">) {
</span><span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> y=0; y<<span style="color: #ff0000;">arr[x].length</span>; y++<span style="color: #000000;">) {
System.out.print(arr[x][y]</span>+" "<span style="color: #000000;">);
}
System.out.println();
}
}
}
二维数组求和:
分析:
A:把题目的数据用二维数组来表示
int[][] arr = {{22,44},{77,88},{25,65},{11,99}};
B:如何求和呢?
求和其实就是<a href="https://www.jb51.cc/tag/huoqu/" target="_blank" class="keywords">获取</a>到每一个元素,然后累加即可。
C:定义一个求和变量sum,初始化值是0。
D:通过遍历就可以得到每一个二维数组的元素。
E:把元素累加即可。
F:最后<a href="https://www.jb51.cc/tag/shuchu/" target="_blank" class="keywords">输出</a>sum,就是结果。
<span style="color: #008000;">*/<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Test2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">把题目的数据用二维数组来表示
<span style="color: #0000ff;">int[][] arr = {{22,99<span style="color: #000000;">}};
</span><span style="color: #008000;">//</span><span style="color: #008000;">定义一个求和变量sum,初始化值是0。</span>
<span style="color: #0000ff;">int</span> sum = 0<span style="color: #000000;">;
</span><span style="color: #008000;">//</span><span style="color: #008000;">通过遍历就可以得到每一个二维数组的元素。</span>
<span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> x=0; x<arr.length; x++<span style="color: #000000;">) {
</span><span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> y=0; y<arr[x].length; y++<span style="color: #000000;">) {
</span><span style="color: #008000;">//</span><span style="color: #008000;">把元素累加即可。</span>
<span style="color: #ff0000;">sum +=</span><span style="color: #000000;"><span style="color: #ff0000;"> arr[x][y];</span>
}
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">最后<a href="https://www.jb51.cc/tag/shuchu/" target="_blank" class="keywords">输出</a>sum,就是结果。</span>
System.out.println("一年的销售额为:"+sum+"万元"<span style="color: #000000;">);
}
}
二维数组树出杨辉三角:打印杨辉三角形(行数可以键盘录入)
需求:打印杨辉三角形(行数可以<a href="https://www.jb51.cc/tag/jianpan/" target="_blank" class="keywords">键盘</a>录入)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
分析:看这种图像的规律
A:任何一行的第一列和最后一列都是1
B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
步骤:
A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。
这个n的数据来自于<a href="https://www.jb51.cc/tag/jianpan/" target="_blank" class="keywords">键盘</a>录入。
B:给这个二维数组任何一行的第一列和最后一列赋值为1
C:按照规律给其他元素赋值
从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
D:遍历这个二维数组。
<span style="color: #008000;">*/<span style="color: #0000ff;">import<span style="color: #000000;"> java.util.Scanner;
<span style="color: #0000ff;">class<span style="color: #000000;"> Array2Test3 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">创建键盘录入对象
Scanner sc = <span style="color: #0000ff;">new<span style="color: #000000;"> Scanner(System.in);
</span><span style="color: #008000;">//</span><span style="color: #008000;">这个n的数据来自于<a href="https://www.jb51.cc/tag/jianpan/" target="_blank" class="keywords">键盘</a>录入。</span>
System.out.println("请输入一个数据:"<span style="color: #000000;">);
</span><span style="color: #0000ff;">int</span> n =<span style="color: #000000;"> sc.nextInt();
</span><span style="color: #008000;">//</span><span style="color: #008000;">定义二维数组</span>
<span style="color: #0000ff;">int</span>[][] arr = <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">int</span><span style="color: #000000;">[n][n];
</span><span style="color: #008000;">//</span><span style="color: #008000;">给这个二维数组任何一行的第一列和最后一列赋值为1</span>
<span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> x=0; x<arr.length; x++<span style="color: #000000;">) {
arr[x][</span>0] = 1; <span style="color: #008000;">//</span><span style="color: #008000;">任何一行第1列</span>
arr[x][x] = 1; <span style="color: #008000;">//</span><span style="color: #008000;">任何一行的最后1列</span>
<span style="color: #000000;"> }
</span><span style="color: #008000;">//</span><span style="color: #008000;">按照规律给其他元素赋值
</span><span style="color: #008000;">//</span><span style="color: #008000;">从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。</span>
<span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> x=2; x<arr.length; x++<span style="color: #000000;">) {
</span><span style="color: #008000;">//</span><span style="color: #008000;">这里如果y<=x是有个小问题的,就是最后一列的问题
</span><span style="color: #008000;">//</span><span style="color: #008000;">所以这里要减去1
</span><span style="color: #008000;">//</span><span style="color: #008000;">并且y也应该从1开始,因为第一列也是有值了</span>
<span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> <span style="color: #ff0000;">y=1</span>; <span style="color: #ff0000;">y<=x-1</span>; y++<span style="color: #000000;">) {
</span><span style="color: #008000;">//</span><span style="color: #008000;">每一个数据是它上一行的前一列和它上一行的本列之和。</span>
<span style="color: #ff0000;">arr[x][y] = arr[x-1][y-1] + arr[x-1</span><span style="color: #000000;"><span style="color: #ff0000;">][y];</span>
}
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似</span>
<span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> x=0; x<arr.length; x++<span style="color: #000000;">) {
</span><span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> y=0;<span style="color: #ff0000;"> y<=x</span>; y++<span style="color: #000000;">) {
System.out.print(arr[x][y]</span>+"\t"<span style="color: #000000;">);
}
System.out.println();
}
}
}
原文链接:https://www.f2er.com/java/403354.html