版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目三数组与方法
相关词汇:1、array
:数组2、element:元素3、row:行4、column
:列5、length
:长度6、dimension:维7、substring:字串8、subscript:下标9、method:方法10、parameter:参数11、formalparameter:形参12、actualparameter:实参13、returnvalue:返回值14、default:缺省【项目描述】本项目介绍数组与方法的联合使用。要求掌握数组的定义及应用;方法的定义及应用;数组作为参数的具体应用。【任务分解】
本项目可分解为以下几个任务:1.数组的定义及使用。2.方法的定义及使用。3.数组参数。【任务描述】任务3-1:编写程序,定义一个一维数组,给数组各元素赋值,并求数组元素的最大值和最小值;定义一个二维数组中biAarry,初始化数组并输出数组的各元素。[跳至解题思路]【必备知识】1.一维数组的声明及使用(1)一维数组的声明与内存的分配
如:intscore[];score=newint[10];除了用两行来声明并分配内存给数组之外,也可以用较为简洁的方式,把两行缩成一行来编写,其格式如下:数据类型
数组名[]=new数据类型[num];上述例子等价于如下写法:intscore[]=newint[10](2)一维数组中元素的表示方法数组下标的最小值为0,最大值为num-1。以一个score[10]的整型数组为例,score[0]代表第1个元素,score[1]代表第2个元素,score[9]为数组中的第10个元素(也就是最后一个元素)。示例1:一维数组的使用。01public
classExample3_1{02 public
static
voidmain(String[]args){03 inti;04 inta[];//声明一整型数组a,此时仅开辟堆内存空间05 a=new
int[3];//开辟栈内存空间供整型数组a使用,其元素个数为306 for(i=0;i<3;i++)//输出数组a07 System.out.print("a["+i+"]="+a[i]+"\t");08 System.out.println("\n数组长度是:"+a.length);//输出数组长度09 }10}【运行结果】a[0]=0 a[1]=0 a[2]=0 数组长度是:3(3)一维数组的初始化1)赋初值初始化数组如果想直接在声明时就对数组赋初值,可以利用大括号完成。只要在数组的声明格式后面再加上初值的赋值则可,如下面的格式所示:数据类型
数组名[]={初值0,初值1,…初值n};示例2:一维数组的初始化。01public
classExample3_2{02 public
static
voidmain(String[]args){03 inti;04 inta[]={15,29,38};//声明一个整数数组a,并赋初值(初始化)05 for(i=0;i<a.length;i++)//输出数组的内容06 System.out.print("a["+i+"]="+a[i]+"\t");07 System.out.println("\n数组长度是:"+a.length);08 }09}【运行结果】a[0]=15a[1]=29 a[2]=38 数组长度是:3示例分析:除了在声明的同时为数组赋初值,也可以在程序中为某个特定的数组元素赋值。可以将程序和第4行更改成下面的程序片段:inta[]=newint[3];a[0]=15;a[1]=29;a[2]=38;2)用new初始化数组
2.二维数组的定义及使用(1)二维数组的声明与内存的分配1)其声明与分配内存的格式如下:数据类型
数组名[][];
//声明二维数组格式1或数据类型[][]数组名;
//声明二维数组格式2数组名=new数据类型[行的个数][列的个数];//分配内存给数组同样,也可用下面的格式来声明数组:数据类型
数组名[][]=new数据类型[行的个数][列的个数];
3.字符数组:char[]ch1={'H,'e','l','l','o'};字符串中所包含的字符个数称为字符串长度,如“Hello”的长度为5。要表示长度为50的字符串,虽然可以使用如下的字符数组:char[]ch1=newchar[50];但由于字符个数太多,致使数组元素太多,使用起来极其不方便。为此,Java提供了String类,通过建立String类的对象使用字符串特别方便。
4.字符串字符串是字符组成的序列,是编程中常用的数据类型。字符串可用来表示标题、名称和地址等。(1)字符串变量的声明和初始化其格式如下:String字符串变量名;字符串变量名=newString();也可以将两条语句合并为一条语句,格式如下:String字符串变量名=newString();
例如:Stringstr;str=newString();等价于:Stringstr=newString();(2)字符串赋值
分别为字符串变量s1、s2和s3赋值:s1=“people”;s2=s1;s3=“China”+s1;结果s2的值为“people”,s3的值为“Chinapeople”。其中运算符“+”的作用是将前后两个字符串连接起来。
(3)字符串的输出例如:Stringstr=newString();str=“beautifulgirl!”;System.out.println(str);输出结果为:
beautifulgirl!
示例4:代码请参考Example3_4。重温任务描述
【解题思路】任务3-1:
1.声明一维数组,利用随机函数给数组元素赋值。2.定义变量min和max,分别用于保存最小值和最大值,假定一开始最大值和最小值都是a[0]元素。3.利用for循环,将a[1]~a[9]元素逐一和min、max进行比较,一旦也更小或更大值,马上置换当前的最小、最大值。4.输出max和min。5.声明一个二维数组中biAarry并初始化。6.利用两重循环输出二维数组的各元素。【任务透析】publicclassClassDemo3_1Test{ publicstaticvoidmain(String[]args){ //随机输入一个整数,计算一维数组中最大值、最小值 intm=Integer.parseInt(args[0]);//通过形参数组args[0]元素接收一个整数m inta[]=newint[m];//构造一个有m个元素的一维数组a System.out.println("随机生成的一维数组:");
for(inti=0;i<m;i++) { a[i]=(int)(100*Math.random()); System.out.println(a[i]+""); } intmin,max; min=a[0]; max=a[0]; for(inti=1;i<m;i++) { if(a[i]<min) min=a[i];
if(a[i]>max) max=a[i]; } System.out.println("\n此数组中最大值是:"+max); System.out.println("\n此数组中最小值是:"+min);
//定义并初始化二维数组biAarry
int[][]biAarry={{10,20},{3,4},{55,66},{41,42}}; //打印biAarry数组元素的内容 System.out.println("\n二维数组biAarry的各个元素是:");
for(inti=0;i<4;i++) {
for(intj=0;j<2;j++) System.out.print(biAarry[i][j]+"\t"); System.out.println(); } }}本示例中,分别演示了一维数组和二维数组的使用。
实际上,在定义并初始化数组时,也可以只给部分元素赋值,没有赋值的元素默认为0。【课堂提问】在输出数组元素时,能否不使用循环语句逐一元素输出,而直接输出数组名呢?在任务3-1中,如果在求一维数组最大值和最小值的同时,要求输出最大值和最小值元素的下标,该如何实现呢?
【现场演练】
编程计算1~9的平方值,将结果保存在一个一维数组之中。任务二
方法的定义及使用
【任务描述】任务3-2:编写程序,定义一个变量,并赋予初值,利用方法调用输出所求的值。跳至解题思路【必备知识】
1.方法的定义
方法的基本组成部分包括以下四部分:返回值方法名参数列表方法主体
[格式3-1方法定义]:[修饰符]返回值类型
方法名称(类型参数1,类型参数2,…){程序主体
程序语句; return表达式;}2.方法的调用调用方法,即执行该方法。调用方法的形式如下:(1)方法表达式对于有返回值的方法作为表达式或表达式的一部分来调用,其形式为:方法名([实际参数表])
说明:
①实际参数表是传递给该方法的诸参数,实际参数简称为实参。实参可以是常量、变量或表达式,相邻的两个实参之间用逗号分隔。
②方法调用的过程是,将实参传递给形参,然后执行方法体,当被调方法运行结束后,从调用该方法的语句的下一句处继续执行。
③实参的个数、顺序、类型和形参要一一对应。
参数传递方式:1、值传递:指实参传递给形参的是一个值。其特点是:形参的改变不会影响实参。2、引用传递:(2)方法语句对无返回值的方法以独立语句的方式调用,其形式如下:方法名([实际参数表]);
示例7:以方法表达式方式调用方法
代码请参考Example3_7。示例8:有参方法,以方法语句方式调用。
代码请参考Example3_8。示例9:无参方法,以方法语句方式调用。重温任务描述【解题思路】
任务3-2:1.在main()方法中声明所需的变量。2.要赋初始值的变量,先赋予它们初始值。3.方法调用。4.在main()方法外定义调用的方法。5、输出所求的值。【任务透析】01
public
classClassDemo3_2Test{02 static
intsum(intx,inty,intz)03 {04 ints;05 s=x+y+z;06 return(s);07 }08 public
static
voidmain(String[]args){09 inta=10,b=20,c=30;10 intresult=sum(a,b,c);11 System.out.println("result="+result);12 }13}在main()方法第9行声明了3个整型变量a,b,c,并分别赋予它们初始值为10,20,30。在第10行通过sum(a,b,c)调用方法sum(),实参为a,b,c,形参为x,y,z。在2-7行执行方法sum(),首先将实参a的值传递给x,将实参b的值传递给y,将实参c的值传递给z,然后执行sum()的方法体,求得3个整数的和为60,将结果赋给s,当执行return语句时,方法sum()结束,返回的值为60,并回到调用该方法的赋值语句,即第10行,将返回值60赋给变量。最后执行输出语句,输出变量result的值。【现场演练】运用方法的知识,求三个整数的最大值?方法的重载方法的重载就是在同一类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可。在这种情况下,该方法就叫被重载了,这个过程称为方法的重载。示例3-12:方法的重载
代码请参考Example3_12。
参数传递方式:1、值传递:指实参传递给形参的是一个值。其特点是:形参的改变不会影响实参。int、float、double、char2、引用传递:指实参传递给形参的是一个地址(引用)。任务三
数组参数
【任务描述】
任务3-3:编写程序,定义一个数组,并赋予初值,利用方法调用输出所求的值。
跳至解题思路【必备知识】在Java中,允许方法调用的参数是数组。在使用数组参数时,应该注意以下事项:(1)在形参表中,数组名后的括号不能省略,括号个数和数组的维数相等。不需给出数组元素的个数。(2)在实参表中,数组名后不需括号。(3)数组名做实际参数时,传递的是地址,而不是值,即形参和实参具有相同的存储单元。
示例13:展示一维数组参数传递地址的特性。代码请参考Example3_13。示例14:展示二维数组参数传递地址的特性。代码请参考Example3_14。综合应用:编写一个sort()方法,将数组元素按大到小顺序排序。在main()方法中调用,观察方法调用前后输出的结果。递归调用:方法自己调用自己。案例:把求1-100之和的程序改为用方法的递归调用来实现。递归调用时必须有一个明确的结束条件,要不断改变传入的数据(实参),才可以实现递归的调用。1+2+3+4+。。。。100=?100+99+98+。。。2+1=?sum(100)100+sum(99)+99+sum(98)+……..2+sum(1)1
【示例3-15】返回数组的方法。01public
classExample3_15{02 public
static
voidmain(String[]args){03 intA[][]={{10,20,30,40,50},{15,25,35,45,55}};04 intTest[][]=new
int[2][5];05 Test=add(A);06 for(inti=0;i<Test.length;i++){07 for(intj=0;j<Test[i].length;j++)08 System.out.print(Test[i][j]+"");09 System.out.print("\n");10 }11 }12 public
static
int[][]add(intarr[][]){14for(int
i=0;i<arr.length;i++)15
for(int
j=0;j<arr[i].length;j++)16 arr[i][j]+=10; 17return
arr; 18 }19
}第5行中将一个二维数组传入add()方法中,在第12行赋值add()是可接收二维数组,且返回类型是二维的整型数组,第16行是完成了在循环内将数组元素值加10的操作,而运算之后的结果再由第17行的return语句返回。重温任务描述【解题思路】
任务3-3:
1.在main()方法中定义一维数组test。2.用静
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客舱服务英语(陕西职业技术学院)知到智慧树答案
- 《职业形象管理》课件
- 生猪养殖场废水深度处理及粪污生产有机肥综合利用项目建设可行性研究报告
- 生态蔬菜种植园项目可行性研究报告
- 美术课件设计你的房间
- 《红眼病鉴别表》课件
- 2015年浙江义乌中考满分作文《我长大了》10
- “一定能完成”的新年计划
- 物理教师心得体会
- 市政工程安全质量协议
- 青马工程培训班结业考试题库(终)
- 铜及铜合金物理冶金基础-塑性加工原理
- 中华系列期刊目录
- 如何当好中层干部
- 文史哲要籍导读知到章节答案智慧树2023年华北科技学院
- 特种作业电工上岗证低压电工作业培训
- 磨难的议论文
- 创新设计前沿知到章节答案智慧树2023年浙江大学
- 三角形的认识(强震球)
- 心理成长与发展智慧树知到答案章节测试2023年武汉职业技术学院
- SOAP病历(中医)的书写
评论
0/150
提交评论