java数组精讲

上传人:桔**** 文档编号:591138689 上传时间:2024-09-16 格式:PPT 页数:41 大小:1.65MB
返回 下载 相关 举报
java数组精讲_第1页
第1页 / 共41页
java数组精讲_第2页
第2页 / 共41页
java数组精讲_第3页
第3页 / 共41页
java数组精讲_第4页
第4页 / 共41页
java数组精讲_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《java数组精讲》由会员分享,可在线阅读,更多相关《java数组精讲(41页珍藏版)》请在金锄头文库上搜索。

1、数数 组组 本章目标本章目标 掌握数组的基本用法掌握数组的基本用法 如何声明一个数组如何声明一个数组 如何分配空间如何分配空间 如何赋值如何赋值 会应用数组解决简单的问题会应用数组解决简单的问题 求平均值求平均值 求最大、最小值求最大、最小值 排序排序 为什么需要数组为什么需要数组3-1 Java测试结束后,老师给令狐冲分配了一个任务,计算全班(36人)的平均分 36个变量太繁琐 int stu1 = 95; int stu2 = 89; int stu3 = 79; int stu4 = 64; 36个变量 int stu5 = 76; int stu6 = 88; avg = (stu1+

2、stu2+stu3+stu4+stu5+stu36)/36 为什么需要数组为什么需要数组3-2 生活案例:博物架 好办法分类放,易于找 1、格子提供了存储空间 2、每一类别都起一个名字 3、每件物品都有个标号 字画类 古玩类 为什么需要数组为什么需要数组3-3 类比博物架:可不可以把数据归类存放? 分类存放不同类型的数据 1 12.5 5 15.6 20 66.78 6 99.5 80 88.9 int类型 double类型 a g h f u char类型 数组在内存中的存储数组在内存中的存储 内存 100 98 80 67 78 整型变量 int a = 80; 82 整型数组 int b

3、 = 100,98,; 数组定义数组定义 数组是一个变量,连续存储相同数组是一个变量,连续存储相同 数据类型数据类型的一种结的一种结构构 int类型 货架名 标识符 67 4 3 2 1 0 下标 64 古玩 物品编号 物品类型 数据 元素下标 元素类型 数组名称 即“标识符” 元素 79 89 95 score5 score0 如何使用数组如何使用数组 使用数组:使用数组: 1、声明数组 int a; a = new int5; a 0 = 8; a0 a 0 = a0 * 10; 80 8 a 2、分配空间 3、赋值 4、处理数据 只声明未赋值,数组中个元素的值默认为只声明未赋值,数组中个

4、元素的值默认为0 数组的声明数组的声明 1 声明数组声明数组: : 告诉计算机数据类型是什么告诉计算机数据类型是什么 Int score1; /Java成绩 int score2 ; /C#成绩 String name; /学生姓名 数据类型 数组名 ; 数据类型 数组名 ; 数组初始化数组初始化 2 分配空间分配空间: : 告诉计算机分配几个格子告诉计算机分配几个格子 score = new int30; avgAge = new int6; name = new String30; 数组属于引用数据类型 声明数组并分配空间 数据类型 数组名 = new 数据类型大小 ; 30 数组赋值数组

5、赋值2-1 2-1 3 赋值赋值:向分配的格子里放数据:向分配的格子里放数据 score0 = 89; score1 = 79; score2 = 76; score2 score1 score0 太麻烦!能不能一起赋值? 30 76 79 89 数组赋值数组赋值2-2 2-2 解决 方法方法1: 边声明边赋值边声明边赋值 int score = 89, 79, 76; int score = new int 89, 79, 76; 方法方法2:动态地从键盘录入信息并赋值:动态地从键盘录入信息并赋值 Scanner input = new Scanner(System.in); for(int

6、 i = 0; i 30; i +) scorei = input.nextInt(); 使用数组求平均分使用数组求平均分2-1 2-1 4 对数据进行处理对数据进行处理: : 计算计算5 5位学生的位学生的JavaJava课程平均分课程平均分 利用学生人数与数组下标的关系,从键盘输入学生的成60 绩 80 90 70 85 成成绩绩单单 使用数组求平均分使用数组求平均分2-2 2-2 4 对数据进行处理对数据进行处理: : 计算计算5 5位学生位学生JavaJava课程的平均分课程的平均分 Scanner input = new Scanner(System.in); for(int i =

7、 0; i 5; i +) scorei = input.nextInt(); 数组的数组的lengthlength属性属性2-1 2-1 4 对数据进行处理对数据进行处理: : 输入学生人数,求这些学生的平均分输入学生人数,求这些学生的平均分 数组名数组名.length.length:查看数组的长度:查看数组的长度 数组的数组的lengthlength属性属性2-2 2-2 4 对数据进行处理对数据进行处理: : 计算计算5 5位学生位学生JavaJava课程的平均分课程的平均分 int sum=0; int num=0; Scanner input = new Scanner(System

8、.in); System.out.print(“请输入学生人数:”); num=input.nextInt(); int score=new int(num); for(int i = 0; i max) max=a1; if (a1max) max=a1; if (a1max) max=a1; 求最大值求最大值3-3 3-3 使用使用max存储擂主初识值:存储擂主初识值:第一个元素为擂主第一个元素为擂主 /计算成绩最大值计算成绩最大值 maxmax =score0 =score0; for(int for(int index=1;index5;index+) index=1;indexmax

9、scoreindexmax) ) max max = scoreindex = scoreindex; ; 循环打擂循环打擂 System.out.println(System.out.println(“本次考试的五位学生的最高分是:本次考试的五位学生的最高分是:”+max); +max); 数组小结数组小结4-1 4-1 Java中都有哪些数组类型中都有哪些数组类型 int int double double char char float float Scanner Scanner Random Random 数组小结数组小结4-2 4-2 使用数组的方式使用数组的方式 方法方法1: in

10、t score ; score=new int36; score0=89; 方法方法2: int score=new int36; score0=89; 方法方法3: int score = new int 89, 79, 76; 或:int score=89,79,76; 数组小结数组小结4-3 4-3 声明数组并分配空间,但未赋值,数组各元素默认值?声明数组并分配空间,但未赋值,数组各元素默认值? 数值类型数值类型 int score=new int3; System.out.println(score1); 运行结果:默认值运行结果:默认值为为0 字符串:字符串: 运行结果:默认值运行结

11、果:默认值为为null String name = new String3 ; System.out.println(name1); if(name1=null) System.put.println(“这个数组下标为1的没有数据”); 数组小结数组小结4-4 4-4 有一个数列:有一个数列:8,4,2,1,23,344,1. 循环输出数列的值循环输出数列的值 2. 求数列中所有数值的和求数列中所有数值的和 3. 猜数游戏:从键盘中任意输入一个数据,判断猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数数列中是否包含此数 12 数组小结数组小结4-4 4-4 小明要去买手机,他询问了小

12、明要去买手机,他询问了4家店的价格,分别是家店的价格,分别是2800元,元,2900元,元,2750元和元和3100元,显示输出最元,显示输出最低价低价 /计算最小值计算最小值 int min=list0 int min=list0 for(int i=0;ilist.length;i+) for(int i=0;ilisti ) if( minlisti ) min=listi; / min=listi; /交换交换 数组排序数组排序2-1 2-1 循环录入循环录入5位学生的位学生的java成绩,进行升序排序成绩,进行升序排序后输出结果后输出结果 使用java.util.Arrays类 ja

13、va.util包提供了许多存储数据的结构和有用的方法 Arrays类提供许多方法操纵数组,例如:排序,查询 Arrays类的sort()方法: 对数组进行升序排列 Arrays.sort( Arrays.sort(数组名);数组名); 数组排序数组排序2-2 2-2 完整代码演示完整代码演示 import java.util.* /导入包导入包 循环输入学生的成绩循环输入学生的成绩 int score = new int5; 并存储在数组中并存储在数组中 Scanner in = new Scanner(System.in); System.out.print(“请输入请输入5位同学的成绩:位

14、同学的成绩:”); for (int i=0; i5;i+) scorei = in.nextInt(); /依次录入依次录入5位同学的成绩位同学的成绩 数组中的元素被数组中的元素被 Arrarys.sort(score); / 排序排序 重新排列重新排列 for (int j=0;jscore.length;j+) System.put.println(scorej); / 输出结果输出结果 循环输出数组循环输出数组中的信息中的信息 数组排序小结数组排序小结 有一列乱序的字符,有一列乱序的字符,a, c,u,b,e,p,f, z,排序并按照英文字母表的逆序输出,排序并按照英文字母表的逆序输出

15、 import java.util.* /导入包导入包 循环输入字母并存储循环输入字母并存储 String zimu = new String8; 在数组中在数组中 Scanner in = new Scanner(System.in); for (int i=0; i=0;j-) System.put.println(zimuj); / 输出结果输出结果 循环输出数组循环输出数组中的信息中的信息 数组算法数组算法5-1 1、数组的复制、数组的复制 arrA: arrB: 2 1 5 8 7 6 3 10 0 2 0 1 0 5 0 8 0 7 0 6 0 3 10 0 数组算法数组算法5-1

16、 1、数组的复制、数组的复制 演示完整代码演示完整代码 数组数组B的长度就是数的长度就是数 组组A的长度的长度 int shuzuA = 1,2,2,3,4,5,6,7; int shuzuB =new intshuzuA.length; for (int i=0; ishuzuA.length;i+) shuzuBi = shuzuA i ; /依次将依次将shuzuA的的8个元素值复制给个元素值复制给shuzuB for (int j=0;jshuzuB.length;j+) System.put.println(shuzuBj); / 输出结果输出结果 循环复制数组循环复制数组元素值元素

17、值 数组算法数组算法5-2 2、数组的查找:查找叫、数组的查找:查找叫“麻子麻子”的同学的同学 arrA: 张三张三 李四李四 王二王二 麻子麻子 每个元素依次查找,找到每个元素依次查找,找到“麻子麻子”显示显示“找到此找到此人!人!”未找到显示未找到显示“查无此人!查无此人!” 数组算法数组算法5-2 2、数组的查找:查找叫、数组的查找:查找叫“麻子麻子”的同学的同学 完整代码完整代码 System.put.print System.put.print ( (“请输入要查找的学生的姓名:请输入要查找的学生的姓名:”); ); StringString name=in.next(); name

18、=in.next(); StringString xm = xm =”张三张三”,”李四李四”,”王二王二”,”麻子麻子”; boolean boolean flag=false; flag=false; 设置一个标识设置一个标识 forfor ( (intint i=0; i=0; ixm.lengthi0;i-) if (shzishzi-1) 比较交换比较交换 int t = shzi; shzi = shzi-1; shzi-1 = t ; / 后一个元素小于前一个元素时,交换值后一个元素小于前一个元素时,交换值 输出结果输出结果 for (int j=0;jshz.length;j+

19、) System.put.println(shzj); / 输出结果输出结果 数组算法数组算法5-4 4、数组的冒泡排序、数组的冒泡排序 数组中冒泡排序算法数组中冒泡排序算法是数组中的最基本的是数组中的最基本的算法算法 21 25 21 21 25 21 25 25 1 100 100 1 1 25 1 189 1 55 100 55 24 55 189 1 100 55 24 24 55 24 189 55 24 100 77 77 189 77 24 77 100 100 189 77 189 189 数组算法数组算法5-4 4、数组的冒泡排序、数组的冒泡排序 演示完整代码演示完整代码 i

20、nt shz = 98,32,21,19,61,55; 循环嵌套(双重循环嵌套(双重循环)循环) for(int i=0;ishz.length-1;i+) for (int j=0;jshzj+1) shz.length-1 int t = shzj; 遍遍 shzj = shzj+1; shzj+1 = t ; / 后一个元素小于当前元素时,交换值后一个元素小于当前元素时,交换值 数组算法数组算法5-5 5、数组的选择排序、数组的选择排序 数组中选择排序算法数组中选择排序算法比冒泡排序高效比冒泡排序高效 21 25 1 25 21 100 189 21 1 55 1 21 25 100 1

21、89 25 21 55 数组算法数组算法5-5 5、数组的选择排序、数组的选择排序 演示完整代码演示完整代码 int shz = 98,32,21,19,61,55; 循环嵌套(双重循环)循环嵌套(双重循环)设置擂主,共设置设置擂主,共设置 for(int i=0;ishz.length-1;i+) shz.length-1遍遍 for (int j=i+1;jshz.length;j+) if (shzjshzi) 每个擂主与其每个擂主与其 int t = shzi; 余元素比较余元素比较 shzi = shzj; shzj = t ; / 后一个元素小于当前元素时,交换值后一个元素小于当前元素时,交换值

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号