您好,欢迎访问三七文档
第八讲数组本章任务升级Java应用程序“Hello”,输入学生成绩:统计本次考试平均分求出本次考试最高分本次考试成绩排名掌握数组的基本用法如何声明一个数组如何分配空间如何赋值会应用数组解决简单问题求平均值求最大、最小值排序查找本章目标1、一次Java内部测试结束后,老师给令狐冲分配了一项任务,计算全班(30人)的平均分为什么需要数组3-1intstu1=95;intstu2=89;intstu3=79;intstu4=64;intstu5=76;intstu6=88;……avg=(stu1+stu2+stu3+stu4+stu5…+stu30)/3030个变量30个变量太繁琐数组定义6764798995数组是一个变量,存储相同数据类型的一组数据int类型下标score[5]10234score[0]数组名称即“标识符”元素小结11、使用数组的好处是什么?2、下列哪组数据能存储在数组中?数组的类型是什么?a)“刘星”,“夏雨”,“夏雪”b)8,98,‘c’,23c)98.1,341.2,34.3数组中的所有元素必须属于相同的数据类型String型double型使用数组四步走:1、声明数组2、分配空间3、赋值4、处理数据如何使用数组int[]a;a=newint[5];a[0]=8;a[0]=a[0]*10;a880a[0]数组的声明int[]score1;//Java成绩intscore2[];//C#成绩String[]name;//学生姓名声明数组:告诉计算机数据类型是什么1数据类型数组名[];数据类型[]数组名;数组初始化score=newint[30];avgAge=newint[6];name=newString[30];30……分配空间:告诉计算机分配几个格子数组属于引用数据类型2数据类型[]数组名=new数据类型[大小];声明数组并分配空间数组赋值score[0]=89;score[1]=79;score[2]=76;……赋值:向分配的格子里放数据……30score[0]score[1]score[2]897976太麻烦!能不能一起赋值?3数组赋值方法1:边声明边赋值方法2:动态地从键盘录入信息并赋值解决int[]score={89,79,76};int[]score;score=newint[30];Scannerinput=newScanner(System.in);for(inti=0;i30;i++){score[i]=input.nextInt();}int[]score=newint[]{89,79,76};使用数组求平均值2-16080907085int[]score={60,80,90,70,85};doubleavg;avg=(score[0]+score[1]+score[2]+score[3]+score[4])/5;int[]score={60,80,90,70,85};intsum=0;doubleavg;for(intindex=0;indexscore.length;index++){sum=sum+score[index];}avg=sum/score.length;成绩单访问数组成员:使用“标识符[下标]”访问成员数组的length属性对数据进行处理:计算5位学生的平均分4演示示例1:完整代码使用数组求平均值2-2回顾问题1:令狐冲的班里有30位学生,使用动态录入并赋值的方式计算平均分演示示例2:演示动态录入成绩并计算AvgpublicclassHelloAccp2{publicstaticvoidmain(String[]args){int[]score=newint[];score[0]=89;score[1]=63;System.out.println(score[0]);}}常见错误3-1编译出错,没有写明数组的大小publicclassHelloAccp3{publicstaticvoidmain(String[]args){int[]score=newint[2];score[0]=89;score[1]=63;score[2]=45;System.out.println(score[2]);}}常见错误3-2编译出错,数组越界常见错误3-3publicstaticvoidmain(String[]args){int[]score=newint[5];score={60,80,90,70,85};int[]score2;score2={60,80,90,70,85};}编译出错,创建数组并赋值的方式必须在一条语句中完成publicclassHelloAccp4{publicstaticvoidmain(String[]args){int[]score=newint[3];score[0]=89;System.out.println(score[1]);}}数组元素缺省值00008900012输出结果小结2使用数组的步骤是什么?有一个数列:8,4,2,1,23,344,121)循环输出数列的值2)求数列中所有数值的和3)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数参考代码参考代码参考代码2、从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分求最大值3-1擂台求最大值3-1根据打擂台的规则:max=a[0];if(a[1]max){max=a[1];}if(a[2]max){max=a[2];}if(a[3]max){max=a[3];}……使用循环来解决求最大值3-3//计算成绩最大值max=score[0];for(intindex=1;index5;index++){if(score[index]max){max=score[index];}}System.out.println(本次考试的五位学生的最高分是:+max);完整代码演示循环打擂使用max存储擂主初始值:第一个元素为擂主小结3小明要去买一部手机,他询问了4家店的价格,分别是2800元,2900元,2750元和3100元,显示输出最低价参考代码intmin=list[0];//存储最小值for(inti=0;ilist.length;i++){if(minlist[i]){min=list[i];//交换}}数组是对象对象是引用类型int[]a1={1,2,3};int[]a2;a2=a1;a2[1]=0;System.out.println(a1[1]);a1中的值也被改变0int[]a1={1,2,3};int[]a2=newint[a1.length];for(inti=0;ia2.length;i++)a2[i]=a1[i];a2[1]=0;System.out.println(a1[1]);利用数组进行排序冒泡排序选择排序直接插入排序冒泡排序基本思想(升序):1.对于给定的n个数,相邻的两个数进行比较,如果不符合从小到大的顺序就进行交换,一趟以后最大的数在最后。2.对于除了最后一个外的其它n-1个数使用同样方法,将次大的数置于倒数第2个位置3.如此类推。排序过程3287394345365923432873943453659234小于,不交换位置大于,交换位置!最大值到了最右边3287394345365923432873943453659234328739434536592343287394345365923432873943453659234328739434536592348个元素7趟排序完成原始数据冒泡排序1.publicvoidbubbleSort(int[]data){2.for(inti=0;idata.length-1;i++){3.for(intj=0;jdata.length-1-i;j++){4.if(data[j]data[j+1]){5.inttemp=data[j];6.data[j]=data[j+1];7.data[j+1]=temp;8.}9.}10.}11.}总结数组的定义方法数组的赋值方法数组的排序和查找
本文标题:TP8V1.0数组
链接地址:https://www.777doc.com/doc-3368222 .html