




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Top1. 方法2. 猜字母游戏1. 方法1.1. 方法(函数,过程)各种语言都有方法的概念(有的语言称其为函数或过程),java中也一样。方法常常用于封装一段特定的逻辑功能,例如:执行计算或操作方法可以在程序中反复被调用,这样,就可以减少代码的重复,更便于程序的维护。1.2. 方法(函数、过程)一个排序的功能,你也需要排,我也需要排,他也需要排,难道每次都要重新写吗?显然很麻烦,后期修改维护也很麻烦,每个地方都需要改,并且有大量的代码重复,有没有一种方式可以解决这个问题呢?那就是方法。各种语言都有方法的概念(有的语言称其为函数或过程),其主要实现对一段特定逻辑功能的封装,如:执行计算或操作。若想要使用这段功能,只需调用一下即可。方法可以在程序中反复被调用,这样可大大减少代码的重复,从而便于程序维护。1.2.1. 定义方法(函数、过程)的功能方法用于封装一个特定的功能,定义时需要考虑五个要素:修饰词、返回值类型、方法名、参数列表、方法体。通过下面的代码进行讲解:1. public static int sum ( int num1 , int num2 ) 2. / 方法体3. 其中,public static为修饰词(后续课程详细介绍这两个关键字),int为返回值类型,sum为方法名(见名知义),int num1,int num2为参数列表。一对大括号中的为方法体(具体的业务功能实现)。1.2.2. 定义参数和返回值方法的参数是指:在调用时传递给方法,需要被方法处理的数据。方法可以有参数也可以没有参数,绝大部分方法为有参数的,因为方法有参数可以使方法的处理更加灵活;在方法定义时,需要声明该方法所需要的参数变量(注意:声明该参数变量时需添加数据类型信息);在方法调用时,会将实际的参数值(数据)传递给方法的参数变量,同时必须保证传递参数的类型和个数符合方法的声明(后面详细介绍)。如下为几个方法定义的实例:1. void say() /无参方法2. void say( string name ) /1个参数方法3. int sum ( int num1 , int num2 ) /2个参数方法上面的示例主要演示的是方法的参数信息,下面看一下方法的返回值。方法调用结束后可以返回一个数据,称之为返回值。当然,方法调用结束后也可以不返回数据,但不管是返回数据也好不返回数据也好,java语法规定,方法在声明时必须指定返回值类型,可分如下的两种情况进行处理: 若方法不需要返回数据,将返回值类型声明为void。 若方法需要返回数据,将返回值类型声明为特定数据类型。1.3. 方法的调用1.3.1. return语句在方法体中可通过return语句返回,return语句的作用在于结束方法且将数据返回给调用方。若方法定义的返回值类型为非void,则方法体中必须使用return返回,并且return后的表达式类型必须与方法定义的返回类型匹配,如下代码所示。1. return num1 +num2 ; 若方法定义的返回值类型为void,则方法体中可以不使用return返回,也可以使用return返回,若使用return ,则它的作用仅在于结束方法调用而返回调用方。1. return;1.3.2. 调用方法时的参数传递下面将通过几个实例演示调用方法时如何传递参数:示例一,定义方法:1. public static int sum ( int num1 , int num2 ) main方法中调用:1. int result = sum(5,6); 2. int a = 50, b = 60;3. int result = sum ( a , b );示例二,定义方法:1. public static void sayHi(String name) main方法中调用:1. sayHi(“wkj”);2. sayHi(”zhangsan”);分析如上代码,方法调用时,会将实际的参数值(5,6,“wkj”,”zhangsan”)传递给方法的参数变量(int num1,int num2,String name),同时必须保证传递参数的类型和个数符合方法的声明。若不匹配会出现编译错误。下面通过一个实例详细讲解方法调用的过程,代码如下所示:1. public static int max(int a, int b) 2. public static void main(String args) 3. int a = 5; int b=6;4. int myMax = max(5,6);5. 上面的代码执行过程如下:1. 为main方法中的变量a、b、myMax分配空间并赋值。参见图 - 2 。图- 21. 调用方法max,为max方法的参数变量a,b分配空间。参见图 3。图- 31. 将调用值传递到参数变量中。参见图 4。图- 41. max方法运行完返回,参数变量空间释放。参见图 5。图- 51. main方法中的myMax变量得到返回值。参见图 6。图- 62. 猜字母游戏详见cookbook。TopJAVA Fundamental DAY061. 猜字母游戏设计数据结构2. 猜字母游戏设计程序结构3. 猜字母游戏实现字母生成方法4. 猜字母游戏实现字母检测方法5. 猜字母游戏实现主方法1 猜字母游戏设计数据结构1.1 问题有猜字母游戏,其游戏规则为:程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串。玩家可以猜测多次,每猜测一次,则由系统提示结果。如果猜测的完全正确,则游戏结束,计算玩家的游戏得分并输出;如果没有猜对,则提示猜测的结果,如猜对了几个字符,以及猜对了几个字符的位置等信息,并提示玩家游戏继续。本案例要求使用交互的方式实现此游戏:由玩家在控制台输入所猜测的字符串,如果所猜测的字符串与结果并不完全相同,则在界面输出比较后的结果,并提醒玩家继续猜测。交互过程如图7所示:图- 7由图7可以看出,每次猜测后,程序将比较玩家所输入的字符串,比较字符以及字符的位置,然后提示结果:5个字符中正确的字符个数,以及位置正确的字符个数,以便于玩家判断后续如何进行猜测。玩家终于猜测正确后,游戏结束,并给出游戏得分,交互过程如图8所示:图- 8其中,游戏的得分规则为:字符的个数乘以100为总分,即此游戏的总分为 500 分。玩家如果第一次就猜对,则得满分(500分);每多猜测一次,则扣10分。由图8可以看出,玩家共猜测了5次,因此,得分为 450。最后,如果玩家在控制台录入 exit,则游戏中止,程序结束。交互过程如图9所示:图- 9本案例需要实现猜字母游戏中的数据结构设计,即,设计相关的数据结构,可以存储此程序中所用到的相关数据。1.2 方案分析猜字母游戏可以看出,此程序需要存储随机生成的字母个数、随机生成的字符串、玩家猜测的总次数、玩家录入的字符串,以及比较后的结果。因此,设计如下变量来存储此游戏中需要用到的相关数据: int 类型变量 count:用于记录玩家猜字母的总次数; char数组类型变量 input:用于保存用户猜测的数据。 char数组类型变量 chs: 用于保存随机生成的多个字母所组成的字符串; int 类型数组变量 result :用于保存判断的结果。此数组有两个元素,第一个用于保存完全猜对的字母个数(字符正确且位置也正确),第二个元素用于保存猜对的字母个数(字符正确但位置不正确)。1.3 步骤实现此案例需要按照如下步骤进行。步骤一:定义类及 main方法首先定义一个名为 GuessingGame 的类,并在类中添加Java应用程序的主方法main,代码如下所示:1. public class GuessingGame 2. public static void main(String args) 3. 4. 5. 步骤二:存储猜测的次数定义一个int类型变量 count,用于记录玩家猜字母的总次数,代码如下所示:1. public class GuessingGame 2. public static void main(String args) 3. int count = 0;4. 5. 步骤三:存储用户猜测的数据char数组类型变量 input:用于保存用户猜测的数据,代码如下所示:1. public class GuessingGame 2. public static void main(String args) 3. int count = 0;4. char input=null;5. 6. 步骤四:存储随机生成的多个字母定义一个char数组类型 chs, 用于保存随机生成的字母。代码如下所示:1. public class GuessingGame 2. public static void main(String args) 3. int count = 0;4. char input=null;5. char chs =null;6. 7. 步骤五:存储比较结果定义一个int数组类型变量 result,用于存储比较的结果。该数组有两个元素,第一个用于保存完全猜对的字母个数(字符和位置均正确),第二个元素用于保存猜对的字母个数(字符正确,但是位置不正确)。代码如下所示:1. public class GuessingGame 2. public static void main(String args) 3. int count = 0;4. char input=null;5. char chs =null;6. int result =new int2;7. 8. 1.4 完整代码本案例的完整代码如下所示:1. public class GuessingGame 2. public static void main(String args) 3. / 表示玩家猜测的次数4. int count = 0;5. /表示用户猜测的数据6. char input=null;7. / 表示猜测的字符串8. char chs =null;9. / 用于保存判断的结果10. int result = new int2;11. 12. 隐藏2 猜字母游戏设计程序结构2.1 问题本案例需要实现猜字母游戏程序中的程序结构设计。2.2 方案分析猜字母游戏可以看出,程序首先需要随机产生 5 个不同的字母作为需要猜测的结果,因此,可以先定义一个方法,以实现此功能;其次,每当玩家猜测一次后,程序需要将玩家录入的字符串和正确答案进行比较,统计正确的字符个数以及正确的位置个数,因此,也可以先定义一个方法,专用于实现比较功能。这样,就可以在 main 方法中调用这两个方法。2.3 步骤实现此案例需要按照如下步骤进行。步骤一:定义方法 generate()在 GuessingGame 类中,定义方法 generate(),该方法用于随机生成五个不同的字母。代码如下所示:1. import java.util.Scanner;2.3. public class GuessingGame 4. public static void main(String args) 5. / 表示玩家猜测的次数6. int count = 0;7. /表示用户猜测的数据8. char input=null;9. / 表示猜测的字符串10. char chs =null;11. / 用于保存判断的结果12. int result = new int2;13. 14.15. /*16. * 随机生成需要猜测的字母序列17. * 18. * return 存储随机字符的数组19. */20. public static char generate() 21. char chs = new char5;22. 23. return chs;24. 25.26. 步骤二:定义方法 check()在GuessingGame类中,定义方法 check()。该方法用于将玩家输入的多个字母(参数 input )和系统随机生成的多个字母(参数 chs)进行比较,统计正确的字符个数,以及位置正确的个数,并将结果存储到数组中,然后返回给调用方。代码如下所示:1. import java.util.Scanner;2.3. public class GuessingGame 4. public static void main(String args) 5. / 表示玩家猜测的次数6. int count = 0;7. /表示用户猜测的数据8. char input=null;9. / 表示猜测的字符串10. char chs =null;11. / 用于保存判断的结果12. int result = new int2;13. 14.15. /*16. * 随机生成需要猜测的字母序列17. * 18. * return 存储随机字符的数组19. */20. public static char generate() 21. char chs = new char5;22. 23. return chs;24. 25.26. /*27. * 比较玩家输入的字母序列和程序所生成的字母序列,逐一比较字符及其位置,并记载比较结果28. * 29. * param chs30. * 程序生成的字符序列31. * param input32. * 玩家输入的字符序列33. * return 存储比较的结果。返回值int数组 的长度为2,其中,索引为0的位置34. * 用于存放完全猜对的字母个数(字符和位置均正确),索引为1的位置用于存放猜对的字母个数(字符正确,但是位置不正确)。35. */36. public static int check(char chs, char input) 37. int result = new int2;38. 39. return result;40. 41. 2.4 完整代码本案例的完整代码如下所示:1. import java.util.Scanner;2.3. public class GuessingGame 4. public static void main(String args) 5. / 表示玩家猜测的次数6. int count = 0;7. /表示用户猜测的数据8. char input=null;9. / 表示猜测的字符串10. char chs =null;11. / 用于保存判断的结果12. int result = new int2;13. 14.15. /*16. * 随机生成需要猜测的字母序列17. * 18. * return 存储随机字符的数组19. */20. public static char generate() 21. char chs = new char5;22. 23. return chs;24. 25.26. /*27. * 比较玩家输入的字母序列和程序所生成的字母序列,逐一比较字符及其位置,并记载比较结果28. * 29. * param chs30. * 程序生成的字符序列31. * param input32. * 玩家输入的字符序列33. * return 存储比较的结果。返回值int数组 的长度为2,其中,索引为0的位置34. * 用于存放完全猜对的字母个数(字符和位置均正确),索引为1的位置用于存放猜对的字母个数(字符正确,但是位置不正确)。35. */36. public static int check(char chs, char input) 37. int result = new int2;38. 39. return result;40. 41. 隐藏3 猜字母游戏实现字母生成方法3.1 问题实现猜字母游戏中的字母生成方法,即,随机生成 5 个不同的字母作为猜测的结果。3.2 方案实现gererate方法,首先声明一个字符类型的数组,用于存储 26 个大写字母,然后声明一个 boolean 类型的数组,其长度也为 26。此数组中的初始值均为false,意味着,程序起始,没有任何字母被选中。如果某个字母被选中,则同时设置该字母在 boolean 类型数组中对应位置上的值为true,表示该字母被选中过。然后,使用嵌套循环:外层循环用于控制所生成的字母个数,即,循环 5 次,以产生5 个字母;而内层循环则用于判断所生成的字母是否重复。generate方法的程序流程如图-10所示。图- 103.3 步骤实现此案例需要按照如下步骤进行。步骤一:构建存储所有字母的数组在generate方法中,首先定义 char 类型的数组变量 letters,用于存放26 个大写字母,然后定义 boolean 类型的数组变量 flag,flag数组的大小和letters数组的大小相同,用于记载某字母是否被选中,以便于判断字母是否重复。代码如下所示:1. public static char generate() 2. char chs = new char5;3. char letters = A, B, C, D, E, F, G, H, I, J,4. K, L, M, N, O, P, Q, R, S, T, U, V,5. W, X, Y, Z ;6. boolean flags = new booleanletters.length;7. 8. return chs;9. 步骤二:随机选择 5 个不同的字母使用嵌套循环,随机选择 5 个不同的字母,并且这五个字母各不相同。代码如下所示:1. public static char generate() 2. char chs = new char5 ;3. char letters = A, B, C, D, E, F, G, H, I, J,4. K, L, M, N, O, P, Q, R, S, T, U, V,5. W, X, Y, Z ;6. boolean flags = new booleanletters.length;7. for (int i = 0; i chs.length; i+) 8. int index;9. do 10. index = (int) (Math.random() * (letters.length);11. while (flagsindex);/ 判断生成的字符是否重复12. chsi = lettersindex;13. flagsindex = true;14. 15. return chs;16. 3.4 完整代码本案例的完整代码如下所示:1. import java.util.Scanner;2.3. public class GuessingGame 4. public static void main(String args) 5. / 表示玩家猜测的次数6. int count = 0;7. /表示用户猜测的数据8. char input=null;9. / 表示猜测的字符串10. char chs =null;11. / 用于保存判断的结果12. int result = new int2;13. 14.15. /*16. * 随机生成需要猜测的字母序列17. * 18. * return 存储随机字符的数组19. */20. public static char generate() 21. char chs = new char5;22. char letters = A, B, C, D, E, F, G, H, I, J,23. K, L, M, N, O, P, Q, R, S, T, U, V,24. W, X, Y, Z ;25. boolean flags = new booleanletters.length;26. for (int i = 0; i chs.length; i+) 27. int index;28. do 29. index = (int) (Math.random() * (letters.length);30. while (flagsindex);/ 判断生成的字符是否重复31. chsi = lettersindex;32. flagsindex = true;33. 34. return chs;35. 36.37. /*38. * 比较玩家输入的字母序列和程序所生成的字母序列,逐一比较字符及其位置,并记载比较结果39. * 40. * param chs41. * 程序生成的字符序列42. * param input43. * 玩家输入的字符序列44. * return 存储比较的结果。返回值int数组 的长度为2,其中,索引为0的位置45. * 用于存放完全猜对的字母个数(字符和位置均正确),索引为1的位置用于存放猜对的字母个数(字符正确,但是位置不正确)。46. */47. public static int check(char chs, char input) 48. int result = new int2;49. 50. return result;51. 52. 隐藏4 猜字母游戏实现字母检测方法4.1 问题比较玩家输入的字母序列和程序所生成的字母序列,逐一比较字符及其位置,并记载比较结果。4.2 方案实现check方法,需要逐一取出玩家录入的每个字符,并和结果字符串一一比较:比较字符本身以及字符所在的位置,并记载比较的结果。此案例需要使用嵌套循环来实现。check方法的流程如图-11所示,其中红色部分表示外层循环,蓝色部分表示内层循环。图- 114.3 步骤实现此案例需要按照如下步骤进行。步骤一:构建存储比较结果的数组在check() 方法中,首先定义int 类型的数组类型变量result,用于存储比较的结果。数组 result 的长度为2,其中,resut0 用于存放完全猜对的字母个数(字符和位置均正确),result1 用于存放猜对的字母个数(字符正确,但是位置不正确)。代码如下所示:1. public static int check(char chs, char input) 2. int result = new int2;3. 4. return result;5. 步骤二:比较使用嵌套循环,统计完全猜对的字母个数,和猜对的字母个数(位置不对),代码如下所示:1. public static int check(char chs, char input) 2. int result = new int2;3. for (int i = 0; i input.length; i+) 4. for (int j = 0; j chs.length; j+) 5. if (inputi = chsj) 6. result1+;7. if (i = j) 8. result0+;9. 10. break;11. 12. 13. 14. return result;15. 4.4 完整代码本案例的完整代码如下所示:1. import java.util.Scanner;2.3. public class GuessingGame 4. public static void main(String args) 5. / 表示玩家猜测的次数6. int count = 0;7. /表示用户猜测的数据8. char input=null;9. / 表示猜测的字符串10. char chs =null;11. / 用于保存判断的结果12. int result = new int2;13. 14.15. /*16. * 随机生成需要猜测的字母序列17. * 18. * return 存储随机字符的数组19. */20. public static char generate() 21. char chs = new char5;22. char letters = A, B, C, D, E, F, G, H, I, J,23. K, L, M, N, O, P, Q, R, S, T, U, V,24. W, X, Y, Z ;25. boolean flags = new booleanletters.length;26. for (int i = 0; i chs.length; i+) 27. int index;28. do 29. index = (int) (Math.random() * (letters.length);30. while (flagsindex);/ 判断生成的字符是否重复31. chsi = lettersindex;32. flagsindex = true;33. 34. return chs;35. 36.37. /*38. * 比较玩家输入的字母序列和程序所生成的字母序列,逐一比较字符及其位置,并记载比较结果39. * 40. * param chs41. * 程序生成的字符序列42. * param input43. * 玩家输入的字符序列44. * return 存储比较的结果。返回值int数组 的长度为2,其中,索引为0的位置45. * 用于存放完全猜对的字母个数(字符和位置均正确),索引为1的位置用于存放猜对的字母个数(字符正确,但是位置不正确)。46. */47. public static int check(char chs, char input) 48. int result = new int2;49. for (int i = 0; i input.length; i+) 50. for (int j = 0; j 欢迎尝试猜字母游戏!);13. / 表示猜测的字符串14. char chs = generate();15. 16. scanner.close();17. 18.19. /*20. * 随机生成需要猜测的字母序列21. * 22. * return 存储随机字符的数组23. */24. public static char generate() 25. 26. char letters = A, B, C, D, E, F, G, H, I, J,27. K, L, M, N, O, P, Q, R, S, T, U, V,28. W, X, Y, Z ;29. boolean flags = new booleanletters.length;30. char chs = new char5;31. for (int i = 0; i chs.length; i+) 32. int index;33. do 34. index = (int) (Math.random() * (letters.length);35. while (flagsindex);/ 判断生成的字符是否重复36. chsi = lettersindex;37. flagsindex = true;38. 39. return chs;40. 41.42. /*43. * 比较玩家输入的字母序列和程序所生成的字母序列,逐一比较字符及其位置,并记载比较结果44. * 45. * param chs46. * 程序生成的字符序列47. * param input48. * 玩家输入的字符序列49. * return 存储比较的结果。返回值int数组 的长度为2,其中,索引为0的位置50. * 用于存放完全猜对的字母个数(字符和位置均正确),索引为1的位置用于存放猜对的字母个数(字符正确,但是位置不正确)。51. */52. public static int check(char chs, char input) 53. int result = new int2;54. for (int i = 0; i input.length; i+) 55. for (int j = 0; j 欢迎
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版收养协议范文集锦:全面解读收养合同要点
- 2025年度房地产估价代理服务协议
- 2025版汽车金融分期贷款购车合同范本
- 2025版浅析劳动合同中的定金合同条款适用
- 甘肃省张掖市山丹县马场总场中学2024-2025学年上学期期末质量检测九年级数学试题(含答案)
- 2025版智能家居系统集成试用协议书模板
- 2025年度行政诉讼上诉状范本制作及授权使用合同
- 2025版全新商铺门面租赁合同范本提供
- 2025年度智能设备动产质押贷款协议范本
- 2025版私人住宅智能安防系统设计与安装合同
- DBJ33-T 1152-2025 《建筑工程建筑面积计算和竣工综合测量技术规程》
- 数字化转型背景下的计算机类工程技术人才培养模式研究
- 医务人员职业道德规范学习体会
- 欧莱雅物流管理模式
- 2024沪教版初中英语新教材六年级上册单词表(默写表)
- 教学课件-饭店管理概论第二版
- 开学第一课开学立规矩课件21
- 《冲击波疗法》课件
- 基于模型的系统工程(MBSE)及MWORKS实践 课件 4 MBSE教材讲义 第四章 设计仿真一体化的MBSE方法
- 《中国世界遗产》课件
- 糖尿病眼底病变
评论
0/150
提交评论