java二位数组基础入门.docx
《java二位数组基础入门.docx》由会员分享,可在线阅读,更多相关《java二位数组基础入门.docx(14页珍藏版)》请在冰点文库上搜索。
![java二位数组基础入门.docx](https://file1.bingdoc.com/fileroot1/2023-6/13/0a378e09-1acd-4892-86a2-482e7ea787b9/0a378e09-1acd-4892-86a2-482e7ea787b91.gif)
java二位数组基础入门
1二维数组
/*
二维数组:
就是元素为一维数组的一个数组。
格式1:
数据类型[][]数组名=new数据类型[m][n];
m:
表示这个二维数组有多少个一维数组。
n:
表示每一个一维数组的元素有多少个。
注意:
A:
以下格式也可以表示二维数组
a:
数据类型数组名[][]=new数据类型[m][n];
b:
数据类型[]数组名[]=new数据类型[m][n];
B:
注意下面定义的区别
intx;
inty;
intx,y;
int[]x;
int[]y[];
int[]x,y[];
*/
classArray2Demo{
publicstaticvoidmain(String[]args){
//定义一个二维数组
int[][]arr=newint[3][2];
//定义了一个二维数组arr
//这个二维数组有3个一维数组的元素
//每一个一维数组有2个元素
//输出二维数组名称
System.out.println(arr);//地址值[[I@175078b
//输出二维数组的第一个元素一维数组的名称
System.out.println(arr[0]);//地址值[I@42552c
System.out.println(arr[1]);//地址值[I@e5bbd6
System.out.println(arr[2]);//地址值[I@8ee016
//输出二维数组的元素
System.out.println(arr[0][0]);//0
System.out.println(arr[0][1]);//0
}
}
2二维数组格式
/*
格式2:
数据类型[][]数组名=new数据类型[m][];
m:
表示这个二维数组有多少个一维数组。
列数没有给出,可以动态的给。
这一次是一个变化的列数。
*/
classArray2Demo2{
publicstaticvoidmain(String[]args){
//定义数组
int[][]arr=newint[3][];
System.out.println(arr);//[[I@175078b
System.out.println(arr[0]);//null
System.out.println(arr[1]);//null
System.out.println(arr[2]);//null
//动态的为每一个一维数组分配空间
arr[0]=newint[2];
arr[1]=newint[3];
arr[2]=newint[1];
System.out.println(arr[0]);//[I@42552c
System.out.println(arr[1]);//[I@e5bbd6
System.out.println(arr[2]);//[I@8ee016
System.out.println(arr[0][0]);//0
System.out.println(arr[0][1]);//0
//ArrayIndexOutOfBoundsException
//System.out.println(arr[0][2]);//错误
arr[1][0]=100;
arr[1][2]=200;
}
}
3二维数组格式3
/*
格式3:
基本格式:
数据类型[][]数组名=new数据类型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
简化版格式:
数据类型[][]数组名={{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
举例:
int[][]arr={{1,2,3},{4,5,6},{7,8,9}};
int[][]arr={{1,2,3},{4,5},{6}};
*/
classArray2Demo3{
publicstaticvoidmain(String[]args){
//定义数组
int[][]arr={{1,2,3},{4,5},{6}};
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[0][0]);//1
System.out.println(arr[1][0]);//4
System.out.println(arr[2][0]);//6
System.out.println(arr[0][1]);//2
System.out.println(arr[1][1]);//5
//越界
System.out.println(arr[2][1]);//错误
}
}
4二维数组的遍历
/*
需求:
二维数组遍历
外循环控制的是二维数组的长度,其实就是一维数组的个数。
内循环控制的是一维数组的长度。
*/
classArray2Test{
publicstaticvoidmain(String[]args){
//定义一个二维数组
int[][]arr={{1,2,3},{4,5,6},{7,8,9}};
//请问谁代表{1,2,3}
//arr[0]就是第一个数组
//arr[0]={1,2,3};
for(intx=0;xSystem.out.println(arr[0][x]);
}
System.out.println("--------------");
for(intx=0;xSystem.out.println(arr[1][x]);
}
System.out.println("--------------");
for(intx=0;xSystem.out.println(arr[2][x]);
}
System.out.println("--------------");
//用循环改进
for(intx=0;x<3;x++){
for(inty=0;ySystem.out.print(arr[x][y]+"");
}
System.out.println();
}
System.out.println("--------------");
//这个时候,注意了,3是我们根据上面的代码得出来的
//但是,它不能针对任何的数组都可以这样
//所以,我们应该想办法改进
//其实,外面的这个循环的长度就是二维数组的长度
for(intx=0;xfor(inty=0;ySystem.out.print(arr[x][y]+"");
}
System.out.println();
}
System.out.println("--------------");
//用方法改进
//调用方法
printArray2(arr);
System.out.println("--------------");
//我们再来一个列数是变化的
int[][]arr2={{1,2,3},{4,5},{6}};
printArray2(arr2);
}
/*
需求:
遍历二维数组
两个明确:
返回值类型:
void
参数列表:
int[][]arr
*/
publicstaticvoidprintArray2(int[][]arr){
for(intx=0;xfor(inty=0;ySystem.out.print(arr[x][y]+"");
}
System.out.println();
}
}
}
5求公司销售额
/*
公司年销售额求和
某公司按照季度和月份统计的数据如下:
单位(万元)
第一季度:
22,66,44
第二季度:
77,33,88
第三季度:
25,45,65
第四季度:
11,66,99
分析:
A:
把题目的数据用二维数组来表示
int[][]arr={{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
B:
如何求和呢?
求和其实就是获取到每一个元素,然后累加即可。
C:
定义一个求和变量sum,初始化值是0。
D:
通过遍历就可以得到每一个二维数组的元素。
E:
把元素累加即可。
F:
最后输出sum,就是结果。
*/
classArray2Test2{
publicstaticvoidmain(String[]args){
//把题目的数据用二维数组来表示
int[][]arr={{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
//定义一个求和变量sum,初始化值是0。
intsum=0;
//通过遍历就可以得到每一个二维数组的元素。
for(intx=0;xfor(inty=0;y//把元素累加即可。
sum+=arr[x][y];
}
}
//最后输出sum,就是结果。
System.out.println("一年的销售额为:
"+sum+"万元");
}
}
6打印杨辉三角形
/*
需求:
打印杨辉三角形(行数可以键盘录入)
1
11
121
1331
14641
15101051
分析:
看这种图像的规律
A:
任何一行的第一列和最后一列都是1
B:
从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
步骤:
A:
首先定义一个二维数组。
行数如果是n,我们把列数也先定义为n。
这个n的数据来自于键盘录入。
B:
给这个二维数组任何一行的第一列和最后一列赋值为1
C:
按照规律给其他元素赋值
从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
D:
遍历这个二维数组。
*/
importjava.util.Scanner;
classArray2Test3{
publicstaticvoidmain(String[]args){
//创建键盘录入对象
Scannersc=newScanner(System.in);
//这个n的数据来自于键盘录入。
System.out.println("请输入一个数据:
");
intn=sc.nextInt();
//定义二维数组
int[][]arr=newint[n][n];
//给这个二维数组任何一行的第一列和最后一列赋值为1
for(intx=0;xarr[x][0]=1;//任何一行第1列
arr[x][x]=1;//任何一行的最后1列
}
//按照规律给其他元素赋值
//从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
for(intx=2;x//这里如果y<=x是有个小问题的,就是最后一列的问题
//所以这里要减去1
//并且y也应该从1开始,因为第一列也是有值了
for(inty=1;y<=x-1;y++){
//每一个数据是它上一行的前一列和它上一行的本列之和。
arr[x][y]=arr[x-1][y-1]+arr[x-1][y];
}
}
//遍历这个二维数组。
/*
for(intx=0;xfor(inty=0;ySystem.out.print(arr[x][y]+"\t");
}
System.out.println();
}
*/
//这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似
for(intx=0;xfor(inty=0;y<=x;y++){
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
}
}
7二维数组格式1的内存
二维数组格式2的内存
二维数组格式3的内存