JAVA基础.docx
- 文档编号:27608663
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:36
- 大小:529.25KB
JAVA基础.docx
《JAVA基础.docx》由会员分享,可在线阅读,更多相关《JAVA基础.docx(36页珍藏版)》请在冰豆网上搜索。
JAVA基础
Java语言基础Day04
Top
1.水仙花数问题
2.猜字母游戏
3.质数问题(选做)
4.随机加法运算器(选做)
5.成绩统计程序
6.费氏数列问题
1水仙花数问题
1.1问题
计算某个范围内所有水仙花数。
用户输入0到某个范围的数,系统输出这个范围内的所有水仙花数,水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。
(例如:
1^3+5^3+3^3=153)。
系统交互情况如图-36所示:
图-36
1.2方案
系统使用双层for循环判断某个数是否为水仙花数,外层循环确保每个用户输入的范围内的数都判断到,里层循环判断某个数是否为水仙花数,m%10取到个位数,例如:
intm=153,经过intv=m%10计算后v=3;m/=10去除各位数,例如:
intm=153,经过m/=10计算后m=15。
代码如下所示:
1.for(intn=1;n<=max;n++){
2. //判断n是否为水仙花数
3. intsum=0;
4. for(intm=n;m>0;m/=10){
5. intv=m%10;
6. sum+=v*v*v;
7. }
8.
9.}
如果n和sum相等,那么说明n是水仙花数。
代码如下所示:
1.if(n==sum){
2. System.out.print(n+"");
3.}
1.3实现
系统代码实现如下:
1.importjava.util.Scanner;
2.publicclassDaffodils{
3. publicstaticvoidmain(String[]args){
4. Scannerscanner=newScanner(System.in);
5. System.out.print("请输入查找水仙花的范围:
0~");
6. intmax=scanner.nextInt();
7. scanner.close();
8. for(intn=1;n<=max;n++){
9. //判断n是否为水仙花数
10. intsum=0;
11. for(intm=n;m>0;m/=10){
12. intv=m%10;
13. sum+=v*v*v;
14. }
15. if(n==sum){
16. System.out.print(n+"");
17. }
18. }
19. }
20.}
隐藏
1.4扩展(选做)
计算“百钱买百鸡”的问题。
百钱买百鸡:
公鸡5文钱一只,母鸡3文钱一只,小鸡1文钱3只,如何用百文钱买百只鸡?
系统交互情况如图-37所示:
图-37
1.publicclassDaffodilsExt{
2. publicstaticvoidmain(String[]args){
3. intcock,hen,chick;
4. System.out.println("百钱买百鸡的方案如下:
");
5. for(cock=0;cock<=20;cock++){
6. for(hen=0;hen<=33;hen++){
7. chick=100-cock-hen;
8. if(chick%3==0){
9. inttotal=cock*5+hen*3+chick/3;
10. if(total==100){
11. System.out.println("公鸡:
"+cock+",母鸡:
"
12. +hen+",小鸡:
"+chick);
13. }
14. }
15. }
16. }
17.}
18.}
隐藏
2猜字母游戏
2.1问题
猜字母游戏。
系统随机产生5个按照一定顺序排列的字符,然后由用户输入一个5个字符的字符串,由程序判断这五个字符和系统所产生的5个字符是否相同(字母和位置均相同)。
如果相同,则程序结束,并计算得分;如果不相同,则输出比较结果以提示用户继续游戏。
系统交互情况如图-48所示:
图-48
由图-48可以看出,程序每次比较用户所录入的字符时,会提示5个字符中正确的字符个数,以及位置正确的个数作为提示,以便于用户判断。
游戏的得分规则为:
字符的个数乘以100为总分,即此游戏的总分为500分。
用户如果第一次就猜对,则得满分(500分);每多猜测一次,则扣10分。
2.2方案
定义一个5个长度的字符数组用于存储系统所产生的5个字符,并定义变量记载用户所猜测的次数。
代码如下:
1.intlevel=5;
2.char[]chs=newchar[level];
3.intscore=0;
定义一个数组letters存放所有字符,定义一个boolean类型的数组大小和letters数组大小相同,用来标识letters数组中的元素是否被选中,代码如下:
1.char[]letters={'A','B','C','D','E','F','G','H','I','J',
2. 'K','L','M','N','O','P','Q','R','S','T','U','V',
3. 'W','X','Y','Z'};
4.boolean[]flags=newboolean[letters.length];
根据所需要产生的字符个数(5个)随机产生字符数组,且字符不能重复。
代码如下:
1.for(inti=0;i 2. intindex; 3. do{ 4. index=RandomUtils.nextInt(letters.length); 5. }while(flags[index]); 6. chs[i]=letters[index]; 7. flags[index]=true; 8.} 然后,提示用户录入5个字符后,并转换为字符数组,代码如下: 1.StringinputStr=scanner.next().trim().toUpperCase(); 2.char[]input=inputStr.toCharArray(); 判断用户的录入的正确性(需要同时判断字符和位置的正确性),代码如下: 1. int[]result=newint[2]; 2. //result[0]: 存储正确的位置个数 3. //result[1]: 存储正确的字符个数 4. for(inti=0;i 5. for(intj=0;j 6. if(input[i]==chs[j]){ 7. result[1]++; 8. if(i==j){ 9. result[0]++; 10. } 11. break; 12. } 13. } 14. } 判断完毕后,需要输出提示信息到界面,并需要计算分数。 如果5个字符的位置均正确,则表示游戏结束,计算并输出用户的得分;否则,将猜测的次数累加1,并提示用户所猜对的字符个数以及位置个数,游戏继续。 代码如下: 1.if(result[0]==level){ 2. score=100*level-score*10; 3. System.out.println("GuessingGame>恭喜你猜对了! 你的得分是: "+score); 4. break; 5.}else{ 6. score++; 7. System.out.println("GuessingGame>你猜对"+result[1]+"个字符,其中" +result[0]+"个字符的位置正确! (总次数="+score+",exit——退出)"); 8.} 2.3实现 系统代码实现如下: 1.importjava.util.Arrays; 2.importjava.util.Scanner; 3.importmons.lang.math.RandomUtils; 4. 5.publicclassGuessingGame{ 6. publicstaticvoidmain(String[]args){ 7. Scannerscanner=newScanner(System.in); 8. System.out.println("GuessingGame>欢迎尝试猜字母游戏! "); 9. 10. intlevel=5; 11. intscore=0; 12. char[]chs=newchar[level]; 13. //产生5个长度的字符数组 14. generate(chs); 15. System.out.println("GuessingGame>游戏开始,请输入你所猜的5个字母序列: (exit——退出)"); 16. while(true){ 17. StringinputStr=scanner.next().trim().toUpperCase(); 18. if("EXIT".equals(inputStr)){ 19. System.out.println("GuessingGame>谢谢你的尝试,再见! "); 20. break; 21. } 22. //比较 23. char[]input=inputStr.toCharArray(); 24. int[]result=check(chs,input); 25. if(result[0]==level){ 26. score=100*level-score*10; 27. System.out.println("GuessingGame>恭喜你猜对了! 你的得分是: "+score); 28. break; 29. }else{ 30. System.out.println("GuessingGame>你猜对"+result[1]+"个字符,其中"+result[0]+"个字符的位置正确! (总次数="+score+",exit——退出)"); 31. score++; 32. } 33. } 34. 35. scanner.close(); 36. } 37. 38. publicstaticvoidgenerate(char[]chs){ 39. char[]letters={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; 40. boolean[]flags=newboolean[letters.length]; 41. for(inti=0;i 42. intindex; 43. do{ 44. index=RandomUtils.nextInt(letters.length); 45. }while(flags[index]); 46. chs[i]=letters[index]; 47. flags[index]=true; 48. } 49. } 50. 51. publicstaticint[]check(char[]chs,char[]input){ 52. int[]result=newint[2]; 53. //result[0]: 存储正确的位置个数 54. //result[1]: 存储正确的字符个数 55. for(inti=0;i 56. for(intj=0;j 57. if(input[i]==chs[j]){ 58. result[1]++; 59. if(i==j){ 60. result[0]++; 61. } 62. break; 63. } 64. } 65. } 66. returnresult; 67. } 68.} 隐藏 2.4扩展 为猜字母游戏添加游戏等级。 游戏等级设为3等: 5、7和9,代表所需要猜测的字母个数。 游戏开始时,由用户选择游戏等级(5,7,9)。 如果选择9,则会随机产生9个字符,然后用户输入一个字符串包含9个字符,看这9个字符和随机产生的9个字符比较,看是否正确,并统计分数。 系统交互情况如图-49所示: 图-49 系统代码实现如下: 1.importjava.util.Arrays; 2.importjava.util.Scanner; 3.importmons.lang.math.RandomUtils; 4. 5.publicclassGuessingGame{ 6. publicstaticvoidmain(String[]args){ 7. Scannerscanner=newScanner(System.in); 8. System.out.println("GuessingGame>欢迎尝试猜字母游戏! "); 9. StringlevelStr; 10. do{ 11. System.out.print("GuessingGame>请输入游戏级别(5、7、9)? "); 12. levelStr=scanner.next().trim(); 13. }while(! "5".equals(levelStr)&&! "7".equals(levelStr) 14. &&! "9".equals(levelStr)); 15. 16. intlevel=Integer.parseInt(levelStr); 17. 18. intscore=0; 19. 20. char[]chs=newchar[level]; 21. generate(chs); 22. System.out.println("GuessingGame>游戏开始,请输入你所猜的"+level 23. +"个字母序列: (exit——退出)"); 24. while(true){ 25. StringinputStr=scanner.next().trim().toUpperCase(); 26. if("EXIT".equals(inputStr)){ 27. System.out.println("GuessingGame>谢谢你的尝试,再见! "); 28. break; 29. } 30. 31. char[]input=inputStr.toCharArray(); 32. int[]result=check(chs,input); 33. if(result[0]==level){ 34. score=100*level-score*10; 35. System.out.println("GuessingGame>恭喜你猜对了! 你的得分是: "+score); 36. break; 37. }else{ 38. System.out.println("GuessingGame>你猜对"+result[1]+"个字符,其中" 39. +result[0]+"个字符的位置正确! (总次数="+score+",exit——退出)"); 40. score++; 41. } 42. } 43. 44. scanner.close(); 45.} 46. 47. publicstaticvoidgenerate(char[]chs){ 48. char[]letters={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; 49. boolean[]flags=newboolean[letters.length]; 50. for(inti=0;i 51. intindex; 52. do{ 53. index=RandomUtils.nextInt(letters.length); 54. }while(flags[index]); 55. chs[i]=letters[index]; 56. flags[index]=true; 57. } 58. } 59. 60. publicstaticint[]check(char[]chs,char[]input){ 61. int[]result=newint[2]; 62. //result[0]: 存储正确的位置个数 63. //result[1]: 存储正确的字符个数 64. for(inti=0;i 65. for(intj=0;j 66. if(input[i]==chs[j]){ 67. result[1]++; 68. if(i==j){ 69. result[0]++; 70. } 71.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 基础