第 06 章 结构化程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Student对象2
age=20 age=10 Student对象1 age=20 age=10
main s2 s1
成绩统计程序
成绩统计程序
案例 描述
现有M位学生的姓名保存在一维String数组中,有N门课程的名称保存在一 维String数组中,另有M×N的二维数组保存这M位学生的每门课程的成绩 数据保存结构如下: 学生名数组:{“张三丰”,”郭靖”,”乔峰”,”张无忌”,”杨过”} 课程名数组:{”JAVA”,”C++”,”Oracle”,”Android”} 成绩数组: { {87,76,63,98}, {67,79,83,75}, {90,76,65,60}, {84,88,63,79}, {72,66,58,77} }
}
方法的定义与调用
方法定义时需要注意以下语法要求:
1.方法在声明时必须指定返回值的类型。
若方法不需要返回数据,将返回值类型声明为void。
若方法需要返回数据,将返回值类型声明为特定数据类型,
通过return语句结束方法且将数据返回给调用方。
2.如果我们想在main方法中直接调用A方法,则A方法必须声明为static。 3.方法的参数是指:在调用时传递给方法,需要被方法处理的数据。
方法的调用分析
public static void main(String[] args){ int a=10,b=20; 形参 a 20 swap(a,b); Swap()方法的临时存储空间 形参 b 10 System.out.println(a+" "+b); } 实参 a 10 public static void swap(int a,int b){ Main()方法的临时存储空间 int temp=a; 实参 b 20 a=b; b=temp; } swap方法中两个形参的值交换,这种交换不会影响 到main方法中的实参值
10 20 Main()方法的临时存储空间
主方法调用方法前的初始状态,main方法的临时空间中存储
方法的调用分析
public static void main(String[] args){ int a=10,b=20; 形参 a 10 swap(a,b); Swap()方法的临时存储空间 形参 b 20 System.out.println(a+" "+b); } public static void swap(int a,int b){ 实参 a 10 int temp=a; Main()方法的临时存储空间 实参 b 20 a=b; b=temp; } 主方法调用swap方法,并将实参的值传递给形参
5.被调方法的临时存储空间释放,程序流程从主调方法中继续往下执行。
方法调用的特殊案例
swap2 public static void main(String[] args){ s2 Student s1=new Student(); Student s2=new Student(); s1 s1.setAge(10); temp=1 s2.setAge(20); 0 swap1(s1,s2); swap1 System.out.println(s1.getAge()+”:”+s2.getAge()); s2 swap2(s1,s2); s1
定义方法: public static int sum(int num1,int num2){…………} public static void sayHi(String name){…………} 调用方法: int result=sum(5,6); sayHi(“张三”);
2.方法调用语句所处的上下文环境要和方法定义的返回值类型匹配。 3.如果在主方法中直接调用自定义方法,方法需要关键字stat梅花8,梅花J,梅花K 红桃8,红桃9,梅花10 梅花8,红桃8,方块K 红桃K,梅花6,梅花5
计算一手扑克牌的级别
案例描述
要求编写程序,对于任意给定的一手牌(3张),判断这一手牌是以 上哪个级别的牌。 程序要求实现以下方法:
public static int getLevel(int[] cards); 该方法的参数说明: int[] cards :一手牌,3张扑克牌的数组,每一张扑克牌用一个int值表 示。 返回值说明: 返回这一手牌的级别编码
4
-1
2
3
3
-1
-1
3
如果该位置是地雷 (值为-1),则输 出排雷失败
-1
2
2
-1
5
-1
-1
3
2
2
-1
3
2
-1
1
1
2
-1
扫雷游戏的递归排雷程序
1
2
2
-1
2
1
-1
2
-1
4
4
-1
2
3
3
-1
-1
3
-1
2
2
-1
5
-1
如果该位置不是地 雷,但该位置周围 8个位置有地雷 (0<值<=8),则 将该位置排开。
第六章 结构化程序设计
方法的定义与调用
方法的定义与调用
方法的定义
方法用于封装一段特定的逻辑功能,如:执行计算或操作; 方法可以在程序中反复被调用,可以减少代码重复,便于程序的维护。 定义方法五个要素: 修饰符、返回值类型、方法名、参数列表、方法体。 Java语言中方法定义的语法格式如下: <修饰符><返回值类型><方法名> ([参数类型参数名], ...){ //方法体代码
方法的调用分析
方法调用的过程分析
1.系统会在栈空间中为方法分配临时存储空间,并为方法的形参与局
部变量分配空间。 2.将实参的值传给形参。 3.程序流程跳到被调用方法中执行。 4.被调用方法执行完成或遇到return语句,程序的流程跳回主调方法,
并将return后的值带回主调方法(如果有的话)。
方法的调用分析
方法的调用分析
public static void main(String[] args){ int a=10,b=20; swap(a,b); System.out.println(a+" "+b); } public static void swap(int a,int b){ int temp=a; a=b; b=temp; }
方法的调用分析
public static void main(String[] args){ int a=10,b=20; swap(a,b); System.out.println(a+" "+b); } 实参a 10 public static void swap(int a,int b){ Main()方法的临时存储空间 实参 b 20 int temp=a; a=b; b=temp; } swap方法调用结束,临时存储空间被释放,程序流 程回到main方法,main方法中的变量值并没有改变
}
方法的定义与调用
public class MethodDemo { public static void main(String[] args) { } //定义无方法返回值,无参数 void say(){} //定义无返回值有参数的方法 void print(String name){} //定义有返回值有参数的方法 int sum(int num1,int num2){ return num1+num2; }
计算一手扑克牌的级别
计算一手扑克牌的级别
案例描述
名称
三条
砸金花游戏中一手扑克牌是3张,根据这3张牌的点数和花色不同, 一手扑克牌分为以下6个级别:
编码
6
描述
三张牌的点数相同
举例
红桃K,梅花K,方块K
同花顺
同花 顺子 对子 单牌
5
4 3 2 1
三张牌花色相同,并且点数连续
三张牌花色相同 三张牌点数连续,但花色不同 三张牌中有两张牌点数相同 不是以上所有情况
方法的定义与调用
方法的调用 程序执行的入口是从主方法开始一行一行开始执行,自定义的 方法不会自动执行,需要通过主方法调用才会执行。
方法调用的语法如下:
方法名([参数1],...);
方法的定义与调用
方法调用时需要注意以下语法现象: 1.方法调用时,传给被调用方法的实参类型需要和方法定义的形参类型匹配。
3.public static void sort(String name):该方法用来对成绩排序 4.public static double get(String uName,String cName): 该方法用来得到某位学员某门课程的成绩
酒店前台管理程序
酒店前台管理程序
案例描述
某酒店有12层楼,每层楼有10个房间,要求为该酒店设 计一套简单的前台房间管理程序,该程序可以通过在命令行 输入命令来为客人办理入住和退房手续。
该案例要求我们对多个关联数组进行操作,并且要求从控制台 读入参数来控制程序的流程。我们可以定义以下方法来完成程序的 功能:
1.public static double avg(String cName):该方法用来求课程平均分
2.public static double sum(String uName):该方法用来求学员成绩总分
创建一个12*10的二维数组来模拟整栋大楼,数组中的每个元 素就是每个房间。 元素定义为String类型,若该房间有客人入住,则保存客人姓 名;若该房间没有客人入住,则保存“EMPTY”。 使用while(true)循环来不停的从控制台读入命令,每读到一 行命令,先解析命令的格式,然后分别调用不同的方法完成不同的 操作。 若命令为“EXIT”,则执行break语句,强制退出程序。
要求程序通过命令行输入以下命令来进行入住、退房及查询的操作: SEARCH :查询所有房间的状态 IN 1202 zhangsan :姓名为zhangsan的客人入住1202房间 OUT 1202:1202房间退房 EXIT:退出程序
酒店前台管理程序
案例分析
该案例程序是一个简单的数组操作问题:
计算一手扑克牌的级别
案例分析 一张扑克牌可以用一个三位整数进行表示,百位表示扑克牌的花色,十 位和个位表示扑克牌的大小(点数)
计算一手扑克牌的级别
案例分析 把每张扑克牌的大小和花色分开,可以利用字符串的截取方法进行获 取,其步骤如下: 1.得到每张扑克牌 2.得到每张扑克牌大小 3.得到每张扑克牌的花色 4.对三张扑克牌大小进行排序 创建一个数组cards1保存三张扑克牌的大小,将这三张牌添加到数 cards1中,将数组进行排序,得到排序后的大小。 5.根据花色和排序后的扑克牌大小就可以分类判断出扑克牌的等级。
成绩统计程序
案例描述
编写程序,使得用户可以通过输入如下控制台命令来查询学生的成绩:
AVG <课程名 >:查询某门课程的平均分。 SUM <学生名>:查询某位学生的总分。
SORT <课程名 > :按照某门课程的成绩排序输出。
GET <学生名><课程名>:查询某位学生的某门课程的成绩。
成绩统计程序
System.out.println(s1.getAge()+”:”+s2.getAge()); } public static void swap1(Student s1,Student s2){ Student temp=s1; s1=s2; s2=temp; } public static void swap2(Student s1,Student s2){ int temp=s1.getAge(); s1.setAge(s2.getAge()); s2.setAge(temp); }
组
扫雷游戏的递归排雷程序
扫雷游戏的递归排雷程序
1 2 2
-1
2
1
-1
2
-1
4
4
-1
2
3
3
-1
-1
3
-1
2
2
-1
5
-1
-1
3
2
2
-1
3
2
-1
1
1
2
-1
扫雷游戏的递归排雷程序
本案例要求编写程序,根据用户输入的坐标值,将该 坐标位置排开.
扫雷游戏的递归排雷程序
1
2
2
-1
2
1
-1
2
-1
4
方法的调用分析
public static void main(String[] args){ int a=10,b=20; swap(a,b); System.out.println(a+" "+b); } public static void swap(int a,int b){ int temp=a; 实参a a=b; 实参b b=temp; }