首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Java入门-Java学习路线课程第六课:二维数组

  • 25-02-21 23:40
  • 3954
  • 8603
blog.csdn.net

本博客地址 | GitHub | 更多资源免费下载

JavaSE二维数组

文章目录

  • 什么是二维数组?
  • 怎么读二维数组?
  • 二维数组的语法格式
  • 二维数组的演示案例:
  • 二维数组内存图:
  • 计算5个班各自的总成绩的演示案例:
  • 经典冒泡排序演示案例加需求分析:
  • 总结(冒泡排序):
  • 附:打印图案、经典九九乘法口决及需求分析

什么是二维数组?

  • 二维数组就是数组中定义了数组,通俗地说就是数组中还有数组

怎么读二维数组?

  • case:
  	int[][] array = new int[3][5];
  
  	在此二维数组中有三个一维数组,每个一维数组中各有5个元素。
  • 1
  • 2
  • 3

二维数组的语法格式

  • 格式1:
数据类型[][]  数组名= new 数据类型[m][n];(推荐使用)

	int[][] array = new int[3][5];
  • 1
  • 2
  • 3
  • 格式2:
数据类型 数组名[][] = new 数据类型[m][n];

    int array[][] = new int[2][2]; 
  • 1
  • 2
  • 3
  • 格式3:
数据类型[] 数组名[] = new 数据类型[m][n];

	int[] array[] = new int[2][2]; 
  • 1
  • 2
  • 3
  • 格式4:
数据类型[][]  数组名= new 数据类型[m][];

	int[][] array = new int[3][] 
  • 1
  • 2
  • 3
  • 格式5 (定义并赋值)简化方式:
数据类型[][]  数组名= {{元素1,元素2,…},{元素1,元素2,…},{元素1,元素2,…}};(推荐使用)

	int[][] array = {{1,2,3},{4,5},{6,7,8,9}}; 
  • 1
  • 2
  • 3
  • 格式6(定义并赋值):
数据类型[][]  数组名= new 数据类型[][]{{元素1,元素2,…},{元素1,元素2,…},{元素1,元素2,…}};

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

二维数组的演示案例:

package cn.org.xx.array;

/**
 * @ClassName:ArrayTest1.java
 * @Description:二维数组
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-10 下午2:52:14
 * @Version:1.0
 */
public class ArrayTest2 {
	/**
		二维数组需求:
	 */
	public static void main(String[] args) {
		// 声明数组(静态声明数组)
		int[][] array = new int[3][5];
		//在此二维数组中,有3个一维数组,每个一维数组中各有5个元素。
		System.out.println(array);//[[
		System.out.println(array[1]);//[
		System.out.println(array[0][0]);//0
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

二维数组内存图:

在这里插入图片描述

计算5个班各自的总成绩的演示案例:

package cn.org.xx.array;

import java.util.Scanner;

/**
 * @ClassName:ArrayTest1.java
 * @Description:二维数组的使用
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-10 下午2:52:14
 * @Version:1.0
 */
public class ArrayTest3 {
	/**
		二维数组需求
		有5个班各5名学生某门课程的成绩,如何计算5个班各自的总成绩
		1.Scanner的三步走:引包、创建对象、使用数据
		2.for 前提条件:有固定的次数
			2.1 for的外层决定循环的轮次
			2.2 for的内层决定循环的具体次数(具体的业务)
		

	 */
	public static void main(String[] args) {
		// 声明数组(静态声明数组)
		int[][] array = new int[5][5];
		//在此二维数组中,有5个一维数组,每个一维数组中各有5个元素。
		int sum;
		//Scanner
		Scanner input=new Scanner(System.in);
		
		//第一个for做输入的事情(输入核心代码)
		for (int i = 0; i < array.length; i++) {//外层决定轮次 5个班      
		//	sum=0;
			System.out.print("输入第"+(i+1)+"班的成绩:");
			for (int j = 0; j < array[i].length; j++) {//内层决定具体的业务
				System.out.println("\n请输入第"+(j+1)+"个同学的成绩:");
				//给每个一维数组中的各有5个元素赋值
				array[i][j] = input.nextInt();
				//sum+=arry[i][j];
			}			
			//System.out.println(sum);
		}
		//第二个for做输出成绩的事情(输出核心代码)
		for (int i = 0; i < array.length; i++) {//外层决定轮次 5个班
			sum=0;
			for (int j = 0; j < array[i].length; j++) {//内层决定具体的业务
				sum+=array[i][j];
			}
			//打印每个班的总成绩
			System.out.println("请输入第"+(i+1)+"个总成绩: "+sum);
		}
	
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

经典冒泡排序演示案例加需求分析:

package cn.org.xx.array;

/**
 * @ClassName:ArrayTest1.java
 * @Description:冒泡排序
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-10 下午2:52:14
 * @Version:1.0
 */
public class ArrayTest1 {
	/**
	 * 需求:冒泡排序 99 68 8 188 98 
	 * 分析需求:5-1= 4轮
	 * 4轮                                                                                                                                   
	 * 
		                                                                 
	            1            2              3             4              交换次数
	 下标
	   0    1和2交换  	 2和3交换  		3和4交换  	  4和5交换     	       4	
		
		
		
		        1             2              3         
	   1    1和2交换	    2和3交换       3和4交换                	         3
		 
		
		        1             2                	
	   2     1和2交换 	    2和3交换                   		     	          2
		
		
		         1                     
		3     1和2交换                              			         	      1
	 * 
	 * 
	 * 数组的下标是从0开始的
	 * 
	 * 0+4=4
	 * 1+3=4
	 * 2+2=4 
	 * 3+1=4
	 * 发现规律:
	 * i+j=4; 
	 * 得出:
	 * j= 4-i
	 * i外层决定轮次 4 j决定内部的次数   4-i
	 * 
	 *交换前打印数组array元素;
	 * 分析核心代码为:
	 * for(int i=0;i<4;i++){//轮次 4 
	 *       for(int j=0;j<4-i;j++){ 
	 *             if(array[j]>array[j+1]){
	 *                  //交换 
	 *                  int temp; 
	 *                  temp=array[j];
	 *                  array[j]=array[j+1]; 
	 *                  array[j+1]=temp; 
	 *             }
	 *       }
	 *} 
	 * 以上4写死了,可以如下代码替换成array.length-1
	 * 交换前打印数组array元素
	 */
	public static void main(String[] args) {
		// 声明数组(静态声明数组)
		int[] array = { 99, 68, 8, 188, 98,100,200 };
		//              0   1  2   3    4  5
		// 打印一下冒泡前排序
		System.out.println("-------冒泡前排序--------");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i] + "\t");
		}
		//冒泡的核心代码:
		for (int i = 0; i <array.length-1; i++) {//外层的for循环决定 轮次 4
			for (int j = 0; j < array.length-1 - i; j++) {//内层的for循环决定 具体做的事 每一轮都会产生一个最大的数
				if (array[j] > array[j + 1]) {
					// 交换
					int temp;
					temp = array[j];
					array[j] = array[j + 1];
					array[j + 1] = temp;
				}
			}
	}
	
		System.out.println();//换行打印
		System.out.println("\n-------冒泡后排序--------");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i] + "\t");
	}
	
}
 }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97

总结(冒泡排序):

  • 冒泡:
    就是水中冒泡泡,轻的上浮,重的下沉。
  • java冒泡排序:
    每一轮的相邻两个数比较后进行交换,每一轮到最后都得到一个最大数(最沉的一个),直至成为一组升序数据。
  • 外层的for循环决定轮次 array.length-1
  • 内层的for循环决定 具体做的事 每一轮都会产生一个最大的数

附:打印图案、经典九九乘法口决及需求分析

package cn.org.xx.test;

/**
 * @ClassName:TestPic1.java
 * @Description:九九乘法口诀
 * @Author:DongGaoYun 
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-12 下午2:09:34
 * @Version:1.0
 */
public class TestPic1 {

	public static void main(String[] args) {

		//九九乘法口决
		//test1();
		//乘法口决的三角形
		test2();
		//矩形
		test3();
		//正三角形
		test4();
		/*打印菱形需求分析: 外层5轮  内层具体打印如下:
	       *                        第一轮打印1个        1    寻找规律:i=1 2*1-1 刚好打印的是1
	    ***       第二轮打印3个        2        i=2 2*2-1 刚好打印的是2
	   *****      第三轮打印5个        3    依次类推  公式为:2*i-1
	  *******     第四轮打印7个        4
	 *********    第五轮打印9个     5 
	  *******    只需要从这行开始打印。也就是只有四轮, 已知条件是外层循环:int i=1;i<=4;i++
	   *****      这个打印正好与上面相反,
	    ***     第一轮打印7个  寻找规律:前面的正三角打印7个星是这个的公式:2*4-1 刚好当i=1时,2*(5-i)-1=2*4-1 打印7颗星
	     *        第二轮打印5个       前面的正三角打印5个星是这个的公式:2*3-1 刚好当i=2时,2*(5-i)-1=2*3-1 打印5颗星
	                 第二轮打印3个 依次类推: 公式为:2*(5-i)-1
	              第二轮打印1个
	     */
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <=5-i; j++) {//外层决定轮次
				System.out.print(" ");//内层决定具体的次数
			}
			for (int j = 1; j <=2*i-1; j++) {//外层决定轮次
				System.out.print("*");//内层决定具体的次数
			}
			System.out.println();
		}
		for (int i = 1; i <= 4; i++) {
			for (int j = 1; j <=i; j++) {//外层决定轮次
				System.out.print(" ");//内层决定具体的次数
			}
			for (int j = 1; j <=2*(5-i)-1; j++) {//外层决定轮次
				System.out.print("*");//内层决定具体的次数
			}
			System.out.println();
		}
		System.out.println("程序结束了");
	}
	/**正三角形
	 * 
	 *      *
		   ***
		  *****
		 *******
		*********
	  
	   5轮次  轮次用i变量表示              行数 5   具体做的事情j变量表示  
		               
		                                                                  
		    1 	                 4    
		    2                    3    
		    3                    2    
		    4                    1    
		    5                    0     
		
	    i+j=5
	    j=5-i	
	 */
	private static void test4() {
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <=5-i; j++) {//外层决定轮次
				System.out.print(" ");//内层决定具体的次数
			}
			for (int j = 1; j <=2*i-1; j++) {//外层决定轮次
				System.out.print("*");//内层决定具体的次数
			}
			System.out.println();
		}
	}
	/*矩形
	    *********
		*********
		*********
		*********
		*********
		*********
		*********
		*********
		*********  
	 */
	private static void test3() {
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= 9; j++) {//外层决定轮次
				System.out.print("*");//内层决定具体的次数
			}
			System.out.println();
		}
		System.out.println("程序结束了");
	}
	/*类似于乘法口决的三角形
	    *
		**
		***
		****
		*****
		******
		*******
		********
		*********
	 */
	private static void test2() {
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= i; j++) {//外层决定轮次
				System.out.print("*");//内层决定具体的次数
			}
			System.out.println();
		}
		System.out.println("程序结束了");
	}
	/*九九乘法口决
	 * 九九乘法口决打印需求:
	 * @param args
	 * 
	 * 分析需求:
	 *  1*1=1 
		2*1=2 2*2=4 
		3*1=3 3*2=6 3*3=9 
		4*1=4 4*2=8 4*3=12 4*4=16 
		5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 
		6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
		7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
		8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
		9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 
	 * 有固定的次数
	 * 外部的for决定轮次    9
	 * 内部的for决定具体的打印次数
	 * 
	 * 
	 * 1.打印逐渐递减
	 * 2.排版从左到右依次显示
	 */
	private static void test1() {
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= i; j++) {//外层决定轮次
				System.out.print(i+"*"+j+"="+j*i+" ");//内层决定具体的次数
			}
			System.out.println();
		}
		System.out.println("程序结束了");
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162

———— 精 选 文 章 ————
  1. Java入门-Java学习路线课程第一课:初识JAVA
  2. Java入门-Java学习路线课程第二课:变量与数据类型
  3. Java入门-Java学习路线课程第三课:选择结构
  4. Java入门-Java学习路线课程第四课:循环结构
  5. Java入门-Java学习路线课程第五课:一维数组
  6. Java入门-Java学习路线课程第七课:类和对象
  7. Java入门-Java学习路线课程第八课:方法和方法重载
  8. Java入门-Java学习路线扩展课程:equals的使用
  9. Java入门-Java学习路线课程面试篇:取商 / 和取余(模) % 符号的使用
  10. Java进阶-Java学习路线课程第一课:Java集合框架-ArrayList和LinkedList的使用
  11. Java进阶-Java学习路线课程第二课:Java集合框架-HashSet的使用及去重原理
  12. Spring框架-Java学习路线课程第一课:Spring核心
  13. Spring框架-Java学习路线课程:Spring的扩展配置
  14. Springboot框架-Java学习路线课程:Springboot框架的搭建之maven的配置
  15. java学习:在给学生演示用Myeclipse10.7.1工具生成War时,意外报错:SECURITY: INTEGRITY CHECK ERROR
  16. 使用jquery发送Ajax请求的几种异步刷新方式
  17. idea Springboot启动时内嵌tomcat报错- An incompatible version [1.1.33] of the APR based Apache Tomcat Native
  18. 一个简单的SSM框架Demo(登录(包含拦截器)和注销

更多免费资源请关注微信公众号:

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览150366 人正在系统学习中
注:本文转载自blog.csdn.net的青云交的文章"https://blog.csdn.net/atgfg/article/details/100832373"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top