带参数的方法第十四章回顾与作业点评无参方法有哪几个组成部分?调用无参方法的两种形式是什么?方法的返回值使用什么关键字?提问2/40预习检查调用带参方法时,有哪些注意事项?包的作用是什么?提问3/40本章任务实现客户信息的添加和显示修改客户姓名对客户姓名排序实现模拟账户存取款功能4/40本章目标会定义带参方法会使用带参方法会创建包组织Java工程5/40为什么要用带参数的方法工作原理新鲜桃汁新鲜苹果汁新鲜梨汁输出三种果汁6/40如何使用带参数的方法3-1定义带参数的方法调用带参数的方法publicclassZhazhiJi{publicStringzhazhi(Stringfruit){Stringjuice=fruit+汁;returnjuice;}}/*调用zhazhi方法*/ZhazhiJimyZhazhiji=newZhazhiJi();StringmyFruit=苹果;StringmyJuice=myZhazhi.zhazhi(myFruit);System.out.println(myJuice);参数列表:(数据类型参数1,数据类型参数2…)调用方法,传递的参数要与参数列表一一对应7/40如何使用带参数的方法3-2访问修饰符返回类型方法名(形式参数列表){//方法的主体}该方法允许被访问调用的权限范围方法返回值的类型publicclassStudentsBiz{String[]names=newString[30];publicvoidaddName(Stringname){//增加学生姓名}publicvoidshowNames(){//显示全部学生姓名}}传送给方法的形参列表一个形式参数没有返回值语法示例定义带参数的方法8/40如何使用带参数的方法3-3publicstaticvoidmain(String[]args){StudentsBizst=newStudentsBiz();Scannerinput=newScanner(System.in);for(inti=0;i5;i++){System.out.print(请输入学生姓名:);StringnewName=input.next();st.addName(newName);}st.showNames();}实参的类型、数量、顺序都要与形参一一对应先实例化对象,再使用方法调用带参数的方法对象名.方法名(参数1,参数2,……,参数n)实参列表演示示例1:带一个参数的方法语法示例9/40带多个参数的方法2-1设计方法,通过传递三个参数(开始位置、结束位置、查找的姓名)来实现在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功问题分析10/40publicbooleansearchName(intstart,intend,Stringname){booleanfind=false;//是否找到标识//指定区间数组中,查找姓名for(inti=start-1;iend;i++){if(names[i].equals(name)){find=true;break;}}returnfind;}返回值类型带有三个形参返回结果:boolean类型带多个参数的方法2-2if(st.searchName(s,e,name)){System.out.println(找到了!);}else{System.out.println(没找到该学生!);}传递三个实参演示示例2:带多个参数的方法示例11/40//方法定义publicvoidaddName(Stringname){//方法体}//方法调用对象名.addName(String张三);调用方法时不能指定实参类型!常见错误4-1对象名.addName(张三);代码阅读注意12/40//方法定义publicbooleansearchName(intstart,intend,Stringname){//方法体}//方法调用Strings=开始;inte=3;Stringname=张三;booleanflag=对象名.searchName(s,e,name);形参和实参数据类型不一致!常见错误4-2代码阅读注意13/40//方法定义publicbooleansearchName(intstart,intend,Stringname){//方法体}//方法调用ints=1;inte=3;booleanflag=对象名.searchName(s,e);形参和实参数量不一致!常见错误4-3代码阅读注意14/40//方法定义publicbooleansearchName(intstart,intend,Stringname){//方法体}//方法调用ints=1;inte=3;Stringname=张三;对象名.searchName(s,e,name);调用方法后没有对返回值作任何处理!常见错误4-4代码阅读注意15/40学员操作——客户姓名添加和显示2-1训练要点带参方法的定义带参方法的调用需求说明创建客户业务类,实现客户姓名的添加和显示指导讲解需求说明16/40学员操作——客户姓名添加和显示2-2实现思路1.创建CustomerBiz类2.创建带参方法addName(Stringname)3.创建方法showNames()4.创建测试类难点指导创建无返回值的带参方法完成时间:20分钟指导17/40学员操作——修改客户姓名需求说明修改学生姓名,输入新、旧姓名,进行修改并显示是否修改成功完成时间:20分钟练习提示定义方法publicbooleaneditName(StringoldName,StringnewName)18/40共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解19/40数组作为参数的方法2-1将5位学员的决赛成绩保存在数组中设计求平均成绩、最高成绩的方法,并把数组作为参数有5位学员参加了Java知识竞赛的决赛,输出决赛的平均成绩和最高成绩问题分析20/40publicdoublecalAvg(int[]scores){intsum=0;doubleavg=0.0;for(inti=0;iscores.length;i++){sum+=scores[i];}avg=(double)sum/scores.length;returnavg;}返回值类型数组作为参数的方法2-2演示示例3:数组作为参数示例publicintcalMax(int[]scores){intmax=scores[0];for(inti=1;iscores.length;i++){if(maxscores[i]){max=scores[i];}}returnmax;}int[]scores=newint[5];//保存比赛成绩//……doubleavgScore=st.calAvg(scores);intmaxScore=st.calMax(scores);数组参数调用方法21/40对象作为参数的方法2-1方式一:设计带四个参数(学号、姓名、年龄、成绩)的方法方式二:将学生学号、姓名、年龄、成绩封装在学生对象中,设计方法,以学生对象作为参数在实现了增加一个学生姓名的基础上,增加学生的学号、年龄和成绩,并显示这些信息,如何实现?问题分析可以将多个相关的信息封装成对象,作为参数传递,避免方法有太多的参数!经验22/40classStudent{publicintid;publicStringname;publicintage;publicintscore;publicvoidshowInfo(){System.out.println(id+\t+name+\t+age+\t+score);}}学生类对象作为参数的方法2-2演示示例4:对象作为参数示例publicvoidaddStudent(Studentstu){for(inti=0;istudents.length;i++){if(students[i]==null){students[i]=stu;break;}}//……studentsBiz.addStudent(student1);studentsBiz.addStudent(student2);对象参数调用方法23/40学员操作——对客户姓名排序2-1训练要点带参方法的调用数组作为方法的参数需求说明编写方法,实现对客户姓名的排序指导讲解需求说明24/40学员操作——对客户姓名排序2-2实现思路1.利用数组存储学生姓名2.定义排序方法:sortNames(String[]names)3.创建测试类难点指导创建数组作为参数的方法调用数组作为参数的方法完成时间:15分钟指导25/40学员操作——改进客户信息的添加和显示需求说明实现添加客户信息客户信息包括:姓名、年龄、是否有会员卡完成时间:20分钟练习提示定义Customer类在CustomerBiz类中声明客户对象数组定义添加客户的方法:addCustomer(Customercust)定义显示信息的方法:showCustomers()26/40共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解27/40为什么需要包Windows树形文件系统文档分门别类,易于查找和管理使用目录解决文件同名冲突问题如何存放两个同名的类而不冲突?Sort.java插入排序Sort.java冒泡排序问题28/40包解决类的同名问题允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件防止命名冲突更好的保护类、属性和方法Sort.java包29/40如何创建包packagecn.jbit.classandobject;//声明包publicclassAccpSchool{//……publicStringtoString(){//……}}包名用package声明包,以分号结尾作为Java源代码第一条语句示例30/40包命名规范包名由小写字母组成,不能以圆点开头或结尾包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名包名后续部分依不同机构内部的规范不同而不同packagemypackage;packagenet.javagroup.mypackage;packagenet.javagroup.research.powerproject;部门名项目名package.mypackage;×31/40用MyEclipse创建包使用MyEclipse创建包的两种方法分别创建包和类创建类的过程中创建类所在的包演示示例5:使用MyEclipse创建包和类32/40包与目录的关系创建好的包和Java源文件是如何存储的?创建包cn.jbit.classandobject,即创建了目录结构:cn\jbit\classandobjectcnjbitclassandobjectAccpSchool.javaHelloAccp.java问题33/40如何导入包为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类importjava.util.*;//导入java.util包中所有类importcn.jbit.classandobject.AccpSchool;//导入指定包中指定类关键字import并不陌生import包名.类名;1.系统包:java.util2.自定义包:cn.jbit.classandobject*:指包中的所有类AccpSchool:指包中的AccpSchool类语法34/40小结AccpSchool.java位于cn.jbit.classandobject包中,HelloAccp.java位于demo包中,下面程序空缺部分需要填入代码吗?如果需要,是什么?//添加代码2//添加代码3publicclassHelloAccp{publicstaticvoidmain(String[]args){AccpSchoolcenter=newAccpSchool();center.showMess