收藏 分享(赏)

实验2.4--方法设计new.doc

上传人:dzzj200808 文档编号:2311854 上传时间:2018-09-10 格式:DOC 页数:9 大小:60.50KB
下载 相关 举报
实验2.4--方法设计new.doc_第1页
第1页 / 共9页
实验2.4--方法设计new.doc_第2页
第2页 / 共9页
实验2.4--方法设计new.doc_第3页
第3页 / 共9页
实验2.4--方法设计new.doc_第4页
第4页 / 共9页
实验2.4--方法设计new.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、实验 2.4-方法设计1 实验目的(1) 掌握方法的定义与调用关系。(2) 理解方法定义的优势,加深对方法的参数传递与返回类型的理解。(3)了解递归的概念及实现特点。2 知识要点方法是程序中完成特定功能的程序段,通过定义方法和多次调用方法可缩短代码的长度,实现代码复用,使整个应用代码结构清晰。2.1 方法的定义修饰符 1 修饰符 2 . 返回值类型 方法名(形式参数表) throws 异常列表 方法体 其中:(1) 方法头-定义方法的访问特性(public)、使用特性(static)、返回类型、名称、参数、抛出异常等。(2) 方法体-实现方法的功能。(3) 方法的返回类型与 return 语句

2、的使用。 除构造方法外 ,方法均需要定义返回类型 ,如果方法无返回值,则用 void 标识。 return 语句用于将方法的结果返回给调用者。通常,return 语句出现在方法的结尾。通常,对于程序中的每个方法要添加注释,说明方法的功能以及关键实现描述。例如,下面为方法的注释风格。/* 判断某年是否为闰年,闰年是年份为 4 的倍数,两个特殊情况是为 100 年或 400 的倍数如果参数 year 是闰年,则返回 true 否则 false */boolean isLeapYear( int year )boolean y4 = ( ( year % 4 ) = 0 ) ;boolean y10

3、0 = ( ( year % 100 ) = 0 ) ;boolean y400 = ( ( year % 400 ) = 0 ) ;return ( y400 | ( y4 2.2 方法的调用方法调用的形式为:方法名(实际参数表)其中:(1) 实参可以是常量、变量或表达式。相邻的两个实参间用逗号分隔。实参的个数、类型、顺序要与形参对应一致。(2) 方法调用的执行过程是,首先将实参传递给形参,然后执行方法体。方法返回后,从调用该方法的下一个语句继续执行。2.3 方法的参数传递Java 方法参数传递就是将实参单元的内容传递给形参单元;根据参数类型分以下两种情形:(1)如果参数为基本类型数据,则实

4、参和形参单元存储的均为数据本身;参数传递就是将实参的数据拷贝给形参单元,在方法内修改形参的值,不影响实参。(2)如果参数为数组或对象,则参数单元存放的是引用地址,也就是将实参单元存放的地址拷贝给形参,这样实参和形参将指向同一数组或对象。对形参数组或对象的操作访问,实际上就是操作实参数组或对象。因此,在方法内修改参数的内容将影响实参。2.4 递归问题(1)递归就是方法内直接或间接调用自己。(2)任何递归问题均要注意有一个停止点,也就是要有一个不再调用自己的出口。例如:阶乘问题的递归方法static int fac(int n) if (n=1) return 1; /不再递归的出口elseret

5、urn n * fac(n-1); /递归调用自己以上程序也可以不要 else,直接写成如下形式,思考为什么?static int fac(int n) if (n=1) return 1;return n * fac(n-1);编写递归方法注意先写特殊情形,后写递归情形。(3)在程序中要尽量不用递归,因为递归的运行效率差。3 样例程序样例 1:编制一个按参数提示从键盘获取一个字符串的方法,利用该方法读取两个整数,求这两个整数之间具有最多因子的数。注:一个数的因子是指能除尽该数的数,包括 1 和自身。【分析】要知道一定范围内谁的因子数量最多,所以,本例总体上是一个循环问题。但同时又是一个比较问

6、题。要设法记下谁(n)拥有因子数量最多(number)。【参考程序】import java.io.*;public class manyfactor public static void main(String a) int x=Integer.parseInt(inputString(“整数 1:“);int y=Integer.parseInt(inputString(“整数 2:“);if (xy) /交换 x,y 的值int temp=x; x=y; y=temp; /让 x 中存放小者,y 中存放大者/* 以下找 x 到 y 之间拥有因子最多的数 */int number=count

7、(x); /记录因子的最多数量,先假设 x 的因子数最多int n=x; /记录拥有最多因子的那个数for (int k=x+1;kjava yanghui11 11 2 11 3 3 1【编程技巧】(1) 递归程序的编写要考虑特殊情形,当 m 为 0 或 n 等于 m 时,不再递归。(2) 杨辉三角形的数据构成,如何用二重循环控制输出。4 上机练习 基本题1) 利用求 n!的方法计算 2!+4!+5!的值。分别利用递归和非递归方法实现求 n!。2) 编写根据三条边求三角形面积的方法。利用该方法求以下两个三角形面积。(1)三条边分别为:3,4,5(2)三条边分别为:5.3, 6.2, 83)从

8、命令行参数获取两个整数,找出两个整数之间的所有素数,每行输出 3 个数。 提高题1) 利用求素数的方法,就 620 之间的所有偶数验证歌德巴赫猜想:任何一个大于 6 的偶数可以分解为两个素数之和。2) 分别编写一个方法求两个整数的最大公约数和最小公倍数,输入两个整数,计算这两个整的最大公约数和最小公倍数。5 思考题1)以下代码的输出结果?public class Teststatic int x=5;public static void main(String argv)change(x);x+;System.out.println(x);static void change(int m)m+

9、=2;A. 7 B. 6 C. 5 D. 8 2) 以下代码的输出结果?public class Testint x=5;public static void main(String argv)Test t=new Test();t.x+;change(t); System.out.println(t.x);static void change(Test m)m.x+=2;A. 7 B. 6 C. 5 D. 8 3) 以下代码的输出结果?public class Testpublic static void main(String argv)String x=“hello“;change(x)

10、; System.out.println(x);static void change(String m)m=m+2;A. hello B. hello2 C. 编译报错 D. 运行报错,不能将串与整数相加4)设有如下类:class MyPoint void myMethod() int x, y;x = 5; y = 3;System.out.print( “ ( “ + x + “, “ + y + “ ) “ );switchCoords( x, y );System.out.print( “ ( “ + x + “, “ + y + “ ) “ );void switchCoords(

11、int x, int y ) int temp;temp = x;x = y;y = temp;System.out.print( “ ( “ + x + “, “ + y + “ ) “ );如果执行 myMethod()方法,则输出结果为?A. (5, 3) (5, 3) (5, 3)B. (5, 3) (3, 5) (3, 5)C. (5, 3) (3, 5) (5, 3)5)以下程序的输出结果为:public class test public static void main(String args) int s=0;for (int k=0;k=10;k+) s+=method(2

12、,k)-1;System.out.println(s);public static int method(int n,int m) if (m=0) return 1;elsereturn n*method(n,m-1);A. 2048 B. 1024 C. 2036 D.20006) 以下程序的输出结果为:public class test public static void main(String args) int m=0;for ( int k=0;k2;k+)method(m+);System.out.println(m);public static void method(int m) System.out.print(m);A. 000 B. 012 C.123 D.111

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报