Java二维数组

多维数组
        三维及以上的数组很少使用

主要使用二维数组

从语法上Java支持多维数组

从内存分配原理的角度讲,只有一维数组

二维数组
二维数组实际上是一个以一维数组做为元素的一维数组

二维数组:即数组的嵌套,数组里面的元素又是一个数组

1) 声明二维数组:  数据类型[][] 数组名;   或者  数据类型 数组名[][];

	//声明一个int类型的二维数组
	int[] [] nums;
	//声明一个String类型的二维数组
	String [] [] strs;

2)分配空间(告诉你这个数组里可以存储多少个元素):

数组名 = new 数据类型[数组长度][数组长度];  或者 数组名 = new 数据类型[数组长度][];

注意:

二维数组在分配空间的时候,第一个数组长度必须要写,告诉你这个二维数组里有多少个元素,第二数组长度可以写,可以不写,不过写了,表示这个二维数组里的里面的元素(一维数组)的长度,如果没有写,这个二维数组里面的元素(一维数组)长度可以不一样

	//给nums数组分配空间,这个数组可以存储3个元素,里面的元素长度都相同,都为5
	nums=new int[3][5];
	//给strs数组分配空间,这个数组可以存储5个元素,里面的元素长度不相同
	strs=new String[5][];

3)赋值:数组名[下标][下标] = 数据;

	//赋值:数组名[下标][下标] = 数据;
	//给nums数组里的第一个元素(一维数组)下标为0的元素赋值为9
	nums[0][0] = 9;
	nums[0][1] = 8;
	nums[0][2] = 18;
	nums[0][3] = 28;
	nums[0][4] = 38;
	nums[1][0] = 48;
	nums[1][1] = 58;
	nums[1][2] = 68;
	nums[1][3] = 78;
	nums[1][4] = 88;
	nums[2][0] = 98;
	nums[2][1] = 81;
	nums[2][2] = 82;
	nums[2][3] = 83;
	nums[2][4] = 84;

二维数组的声明和分配空间合并写
        数据类型[][] 数组名=new 数据类型[数组长度][数组长度];  
        或者  数据类型[][] 数组名=new 数据类型[数组长度][];

	int [][]nums=new int[5][3];
	int[][]nums2=new int[3][];
	String[][]strs=new String[6][5];
	String[][]strs2=new String[8][];

二维数组的声明、分配空间、赋值合并写
        数据类型[][] 数组名 = new 数据类型[][]{{数据1,数据2,…,数据n},{数据1,数据2,…,数据n},…,{数据1,数据2,…,数据n}};   (注意:new后面的两个[][]里都不能写数组长度)

	int [][]nums3=new int[][]{{1,2,3},{4,5,6},{7,8,9},{9,8,7},{6,5,4}};

二维数组的声明、分配空间、赋值合并的简写方式
        数据类型[][] 数组名 = {{数据1,数据2,…,数据n},{数据1,数据2,…,数据n},…,{数据1,数据2,…,数据n}};

	int [][]nums4={{1,2,3},{4,5,6},{7,8,9},{9,8,7},{6,5,4}};

二维数组遍历

	// 二维数组遍历
	int[][] nums={{1,2,3,4},{5,6,7},{2,4,6,8,10}};
	
	System.out.println("nums数组:");
	for (int i = 0; i < nums.length; i++) {
		//nums[i]又是一个一维数组,对这个一维数组nums[i]再次进行遍历,
		for (int j = 0; j < nums[i].length; j++) {
			System.out.print(nums[i][j]+" ");
		}
		System.out.println();
	}

二维数组应用:

import java.util.Scanner;

public class ArrayDemo {

public static void main(String[] args) {
	// 已知有3个班级各5名学员,请使用二维数组计算各个班级的总成绩
	
	//声明一个长度为3的二维数组,此二维数组里面的元素都是长度为5的一维数组
	double[][] scores=new double[3][5];
	
	//创建Scanner类对象
	Scanner sc=new Scanner(System.in);
	
	//通过循环向数组中存入数据
	for (int i = 0; i < scores.length; i++) {
		System.out.println("--------第"+(i+1)+"个班--------");
		for (int j = 0; j < scores[i].length; j++) {
			System.out.println("第"+(j+1)+"个学生的成绩是:");
			scores[i][j]=sc.nextDouble();

		}
		
	}
	
	//数据存储完毕之后输出成绩,一个班的成绩在一行显示
	for (int i = 0; i < scores.length; i++) {
		System.out.print("第"+(i+1)+"个班级学生成绩");
		for (int j = 0; j < scores[i].length; j++) {
			System.out.print(scores[i][j]+" ");
			
		}
		System.out.println();
		
	}
	//统计成绩
	System.out.println("--------统计成绩--------");
	for (int i = 0; i < scores.length; i++) {
		double sum=0;//这个sum要声明在外层for循环内,外层for循环每循环一次,就声明以sum变量用来统计班级总成绩
		for (int j = 0; j < scores[i].length; j++) {
			sum=sum+scores[i][j];
			
		}
		System.out.println((i+1)+"班总成绩:"+sum);
	}

}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code Writers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值