练习一:
获取arr数组中所有元素的和。提示:使用for循环的嵌套循环,遍历即可
‘
public class Test {
public static void main(String[] args) {
int[][] arr = new int[][]{{3,5,8},{12,9},{7,0,6,4}};
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);
}
}
练习二
声明:int[]x,y[];在给x,y变量赋值以后,以下选项允许通过编译的是:(提示:
一维数组:int[] x或者intx[]
二维数组:int[][] y或者int[] y[]或者inty[][])
-
a) x[0] =y;
-
b) y[0] =x;
-
c) y[0][0]= x;
-
d) x[0][0]= y;
-
e) y[0][0] =x[0];
-
f) x = y;
解决这个问题我们要先来明确x,y是什么类型的变量
x是int型的一维数组或者 叫一维数组,元素是int型的
y是int型的二维数组
考察点一:
先确定x、y的类型。
原先我们说过定义x,y是这样的int x;int y;。若类型一样则可以写成int x,y;(合并起来定义)
如果在前面加一个[] ,int [] x,y;则x,y都为一维数组
但现在结构为int [] x,y [] ;这个结构即为int[] x;与int[] y[];拼在了一起。
所以现在的y是一个二维数组。
考察点二
类型和类型之间变量赋值的规则,要么是同个类型,要么是满足自动类型的提升
答案:
a) x[0] =y; 错误 。 y为二维数组,x[0]连一维数组都不算,只是一个int 的一个数
b) y[0] =x; 正确 。 x是一维,y[0]是二维中的一个元素,是一维的。
c) y[0][0]= x; 错误。 x是一维的,y[0][0]是int型的一个数
d) x[0][0]= y;错误。 写法都错了 x[0][0],一维数组不能这样写
e) y[0][0] =x[0]; 正确。 两边都是int型的一个数
f) x = y; 错误。 y是二维的,x是一维的
练习三:
使用二维数组打印一个10行杨辉三角。
【提示】
1、第一行有1个元素,第n行有n个元素
2、每一行的第一个元素和最后一个元素都是1
3、从第三行开始,对于非第一个元素和最后一个元素的元素。即:
yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
三步骤:
1.声明并初始化二维数组
2.给数组的元素赋值
3.遍历二维数组
public class YangHuiTest {
public static void main(String[] args) {
//1.声明并初始化二维数组,应该用动态初始化
int[][] yangHui = new int[10][];//后面的空格中不能写,因为每行的列不一样。
//2.给数组的元素赋值
for(int i = 0;i < yangHui.length;i++){
yangHui[i] = new int[i + 1];
//2.1 给首末元素赋值
yangHui[i][0] = 1;
yangHui[i][i] = 1;
//上面两行可以合并为yangHui[i][0] = yangHui[i][i] = 1;
//2.2 给每行的非首末元素赋值
//if(i > 1){if可以不写,因为如果i=1时,
//下面的for中yangHui[i].length - 1结果为0,无法进入循环。所以可以省略
for(int j = 1;j < yangHui[i].length - 1;j++){
yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
}
//}
}
//3.遍历二维数组
for(int i = 0;i < yangHui.length;i++){
for(int j = 0;j < yangHui[i].length;j++){
System.out.print(yangHui[i][j] + " ");
}
System.out.println();
}
}
}