二维数组
随着数据量的不断增大,我们需要更大的容器来装数据,这个时候,一维内存已经不足以满足所需,我们需要的是二维“平面”数组。
第一个【】代表 的是:这个二维数组由几个一维数组构成,也是这个二维数组的长度
第二个【】代表 的是,构成这个二维数
1.二维数组的定义:
(1).声明----取名字
(2).指定长度----分配空间
(3).整合上面两步 ---- 定义
2.二维数组的赋值:
(1).一个一个元素赋值
(2).一个一个一维数组赋值
(3).一次性赋值
3.二维数组的遍历
案例
1.已知有3个班级各5名学员,请使用二维数组动态录入所有学员成绩, 并计算各个班级的总成绩。
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
fun1();
}
private static void fun1() {
int[][] arr=new int[3][5];//定义二维数组
Scanner sc=new Scanner(System.in);
for(int i=0;i<3;i++){
int count=0;
for(int j=0;j<5;j++){
System.out.print("请输入第"+(i+1)+"个班,第"+(j+1)+"个同学成绩:");
arr[i][j]=sc.nextInt();
count+=arr[i][j];
}
System.out.println("第"+(i+1)+"个班总成绩是:"+count);
}
}
}
2.按照一定的规则选举班长,规则如下:将班里的N个人围城一圈,顺序编号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,然后从下一个人重新开始,最后留下的那个人就被选为班长,请问按照这个规则,选出的班长是原来编号为第几号的学生,假设班上有25个人
public class Demo01 {
public static void main(String[] args) {
//1,给所以人赋值1-25
int[] arr = new int[25];
for (int i = 0; i < 25; i++) {
arr[i] = i + 1;
}
//2.定义计时器和报数器
int count = 0;
int k = 0;
while (count < arr.length - 1) {
for (int i = 0; i < 25; i++) {
if (arr[i]> 0) {
k++;
if (k==3) {
arr[i]=0; //第二次循环时,不满足条件arr[i]>0
count++; //外层循环次数
k=0;
}
}
}
}
for(int i=0;i<25;i++){
if(arr[i]>0){
System.out.println("班长是原来编号为"+arr[i]+"的学生");
}
}
}
}
3.打印杨辉三角形(要求打印10行),如下所示:(使用二维数组)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
方法一:
public static void main(String[] args) {
int [] [] arr = new int[10][10];
for(int i = 0;i<arr.length;i++ ){ //外圈行循环,arr.length代表数组arr行的长度
for(int j =0;j<=i;j++){ //内圈列循环
if(j==0||j==i){ //每行第一个数与最后一个数恒等于1
arr[i][j]=1;
}else{ //每列第i个等于上一列的第i个数与i-1个数的和
arr[i][j] = arr[i-1][j]+arr[i-1][j-1];
}
System.out.print(arr[i][j]+"\t"); //输出完整一行
}
System.out.println(); //输出完整一行后换行
}
}
方法二:
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请您输入要打印几行啊?");
int row = sc.nextInt();
prints(row);
}
private static void prints(int row) {
for (int i = 0; i <= row; i++) {
//打印空格
for (int j = 1; j <= row-i ; j++) {
System.out.print(" ");
}
//打印数字
for (int k = 1; k <= i; k++) {
System.out.print(number(i,k)+" ");
}
System.out.println();
}
}
private static int number(int x, int y) {
if(y==1 || x==y){
return 1;
}else{
return number(x-1,y-1)+number(x-1,y);
}
}
}