***7.35(游戏:猜字词游戏)编写一个猜字词游戏,随机产生一个单词,当用户猜测正确后,正确的字母显示出来。当用户猜出一个单词,显示猜错的次数,并询问用户是否继续猜测

  • 题目
    • 题目描述与运行示例
    • 破题
  • 代码

题目

题目描述与运行示例

***7.35(游戏:猜字词游戏)编写一个猜字词游戏,随机产生一个单词,如运行示例所示。单词中的每个字母显示为1个星号。
当用户猜测正确后,正确的字母显示出来。
当用户猜出一个单词,显示猜错的次数,并询问用户是否继续猜测
声明一个数组来存储单词,如下所示:
//Add any words you wish in this array
String[] words = {“write”, “that”,…}
运行示例:

(Guess) Enter a letter in word ****** >
p
(Guess) Enter a letter in word ****** >
w
(Guess) Enter a letter in word w***** >
o
(Guess) Enter a letter in word w***** >
r
(Guess) Enter a letter in word wr**** >
i
(Guess) Enter a letter in word wri*** >
t
(Guess) Enter a letter in word writ** >
e
(Guess) Enter a letter in word write* >
n
The word is writen. You missed 2 times
Do you want to guess another word? Enter y or n>n

破题

  1. 主方法:设置一个array保存猜测的单词
  2. 主方法:获取这个array的长度赋值给int型变量length
  3. 主方法:设置一个boolean对象bool,赋值为true,循环继续条件
  4. 主方法:设置一个int型变量int_random,用于接收随机值;String类str接收对应单词
  5. 主方法:循环体头,循环继续判断条件为bool
  6. 主方法:给int_random赋值(int)(Math.random() * length)
  7. 主方法:array[int_random]选出对应单词,赋值给str
  8. 主方法:调用自定义方法guess,传入str,用int型变量接收猜错次数
  9. 主方法:输出猜错次数的语句
  10. 主方法:输出是否继续语句,如果用户输入n则将bool改为false
  11. 自定义方法guess: 获取输入str(String对象)长度为length
  12. 自定义方法guess: 声明一个长度为length的char型数组
  13. 自定义方法guess: 将str中的每个字符传递值给char数组
  14. 自定义方法guess: 再声明一个boolean型数组,char数组的下标对应int型下标,全部采用初始值为false,表示未猜出
  15. 自定义方法guess: 创建一个int型记猜错次数初始0,一个boolean对象bool初始为true(当单词全部猜出时设置为false)
  16. 自定义方法guess: 循环体头,判断条件为bool
  17. 自定义方法guess: 输出guess语句(boolean数组元素为false的输出*,下标为true的输出对应的char元素字符)并接收用户输入的字符
  18. 自定义方法guess: 对用户输入字符进行接收
  19. 自定义方法guess: 与char型元素比较,有匹配的则将对应的boolean数组值改为true,没匹配则计数变量+1
  20. 自定义方法guess: 判断boolean数组是否全为true,调用自定义方法isAllTrue,如果返回值是true则将判断条件的bool改为false
  21. 自定义方法guess: 循环体结束语句
  22. 自定义方法guess: 返回计数变量
  23. 自定义方法isAllTrue:获取传入的boolean数组长度length
  24. 自定义方法isAllTrue:设置一个标签boolean,初始值为true
  25. 自定义方法isAllTrue:对boolean数组进行遍历,如果有false,则将标签设置为false
  26. 自定义方法isAllTrue:返回标签

代码

import java.util.Objects;
import java.util.Scanner;public class Test7_35 {public static void main(String[] args) {//1. 主方法:设置一个array保存猜测的单词String[] str_words = {"writen", "that", "program"};//2. 主方法:获取这个array的长度赋值给int型变量lengthint length = str_words.length;//3. 主方法:设置一个boolean对象bool,赋值为true,循环继续条件boolean bool = true;//4. 主方法:设置一个int型变量int_random,用于接收随机值;String类str接收对应单词int int_random = 0, count_guess = 0;String str = "";//5. 主方法:循环体头,循环继续判断条件为boolwhile (bool){//6. 主方法:给int_random赋值(int)(Math.random() * length)int_random = (int)(Math.random() * length);//7. 主方法:array[int_random]选出对应单词,赋值给strstr = str_words[int_random];//8. 主方法:调用自定义方法,传入str,用int型变量接收猜错次数count_guess = guess(str);//9. 主方法:输出猜错次数的语句System.out.println("The word is " + str + ". You missed " + count_guess + " times");//10. 主方法:输出是否继续语句,如果用户输入n则将bool改为falseSystem.out.print("Do you want to guess another word? Enter y or n>");Scanner input = new Scanner(System.in);if (Objects.equals(input.next(), "n")){bool = false;}}}private static int guess(String str) {//11. 自定义方法guess: 获取输入str(String对象)长度为length_strint length_str = str.length();//12. 自定义方法guess: 声明一个长度为length的char型数组str_charchar[] str_char = new char[length_str];//13. 自定义方法guess: 将str中的每个字符传递值给char数组for (int i = 0 ; i < length_str ; i++){str_char[i] = str.charAt(i);}//14. 自定义方法guess: 再声明一个boolean型数组,char数组的下标对应int型下标,全部采用初始值为false,表示未猜出boolean[] bool_char = new boolean[length_str];//15. 自定义方法guess: 创建一个int型记猜错次数初始0,一个boolean对象bool初始为true(当单词全部猜出时设置为false)int count = 0;boolean bool = true;//16. 自定义方法guess: 循环体头,判断条件为boolwhile (bool){//17. 自定义方法guess: 输出guess语句(boolean数组元素为false的输出*,下标为true的输出对应的char元素字符)并接收用户输入的字符Scanner input = new Scanner(System.in);System.out.print("(Guess) Enter a letter in word ");for (int i = 0 ; i < length_str ; i++){if ( !bool_char[i] ){System.out.print("*");}else {System.out.print(str_char[i]);}}System.out.println(" > ");//18. 自定义方法guess: 对用户输入字符进行接收String temp = input.next();char ch_guess = temp.charAt(0);//19. 自定义方法guess: 与char型元素比较,有匹配的则将对应的boolean数组值改为true,没匹配则计数变量+1boolean bool_temp = false;for (int i = 0 ; i <length_str ; i++){if (ch_guess == str_char[i]){bool_char[i] = true;bool_temp = true;}}if ( !bool_temp ){++count;}//20. 自定义方法guess: 判断boolean数组是否全为true,如果是则将判断条件的bool改为falseif (isAllTrue(bool_char)){bool = false;}}//22. 自定义方法guess: 返回计数变量return count;}//自定义方法:看传入的boolean数组是不是全为truepublic static boolean isAllTrue(boolean[] bool){int length = bool.length;boolean sym = true;for (int i = 0 ; i <length ; i++){if ( !bool[i] ){sym = false;break;}}return sym;}
}

Java黑皮书课后题第7章:***7.35(游戏:猜字词游戏)编写一个猜字词游戏,随机产生一个单词,当用户猜测正确后,正确的字母显示出来。当用户猜出一个单词,显示猜错的次数,并询问用户是否继续猜测相关推荐

  1. Java黑皮书课后题第3章:**3.9(商业:检验ISBN-10)ISBN-10由10个个位整数d1d2d3d4d5d6d7d8d9d10组成,最后一位d10是校验和,输入前9个数,显示10位ISBN

    **3.9(商业:检验ISBN-10)ISBN-10由10个个位整数d1d2d3d4d5d6d7d8d9d10组成,最后一位d10是校验和,输入前9个数,显示10位ISBN 题目 题目概述 运行示例 ...

  2. Java黑皮书课后题第7章:7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字。估算调用程序清单7-6中的linearSearch方法的执行时间

    7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字.估算调用程序清单7-6中的linearSearch方法的执行时间 题目 题目描述 程序清单7-6的linearSe ...

  3. Java黑皮书课后题第1章:1.5(计算表达式)编写程序,显示以下式子的结果

    Java黑皮书课后题第1章:1.5(计算表达式) 题目 题目描述 题目槽点 代码 代码块 代码评析与易错点 方法选用 易错点 非常不舒服的运算符前后空格(对新手来讲) 修改日志 题目 题目描述 编写程 ...

  4. Java黑皮书课后题第9章:*9.4(使用Random类)编写一个程序,创建一个种子为1000的Random对象,然后使用nextInt(100)方法显示0到100之间的前50个随机整数

    Java黑皮书课后题第9章:*9.4(使用Random类)编写一个程序,创建一个种子为1000的Random对象,然后使用nextInt方法显示0到100之间的前50个随机整数 题目 赘述 代码 题目 ...

  5. Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString()方法分别显示上述日期

    Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString方法分别显示上述日期 题目 代码 思路 代码 题目 代码 思路 ...

  6. Java黑皮书课后题第1章:1.12(以千米计的平均速度)假设一个跑步者1小时40分35秒跑了24英里。编写一个程序显示以每小时为多少千米为单位的平均速度值(1英里等于1.6千米)

    Java黑皮书课后题第1章:1.12(以千米计的平均速度) 题目 题目描述 破题 代码块 修改日志 题目 题目描述 1.12(以千米计的平均速度)假设一个跑步者1小时40分35秒跑了24英里.编写一个 ...

  7. Java黑皮书课后题第1章:*1.11(人口估算)编写一个程序,显示未来5年的每年人口数。假设当前的人口是312 032 486,每年有365天

    Java黑皮书课后题第1章:*1.11(人口估算) 题目 题目描述 破题 代码块 方法评析 为什么print函数内的表达式不能分开 修改日志 题目 题目描述 *1.11(人口估算)编写一个程序,显示未 ...

  8. Java黑皮书课后题第1章:1.7(求π的近似值)编写程序,显示4*(1-1/3+1/5-1/7+1/9-1/11【+1/13】)

    Java黑皮书课后题第1章:1.7(求π的近似值) 题目描述 代码 代码块 评析 修改日志 题目描述 可以使用以下公式计算π: [手动空格]π=4*(1-1/3+1/5-1/7+1/9-1/11+-) ...

  9. Java黑皮书课后题第1章:1.6(数列求和)编写程序,显示1+2+3+4+5+6+7+8+9的结果

    Java黑皮书课后题第1章:1.6(数列求和) 题目 题目描述 槽点 代码 代码块 区分println(x)与println("x") 法1法2选用 修改日志 题目 题目描述 1. ...

  10. Java黑皮书课后题第1章:1.3(显示图案)编写程序,显示下面的图案 Java

    Java黑皮书课后题第1章:1.3编写程序,显示下面的图案 题目 题目描述 题目槽点 代码片段 赘述 修改日志 题目 题目描述 编写程序,显示(自己语言描述,详见下图:由不同数量的小字母组成JAVA大 ...

最新文章

  1. python组件的react实现_React-Router动态路由设计最佳实践
  2. JS,Jquery获取各种屏幕的宽度和高度
  3. idea关联mysql失败_Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezon‘
  4. 条件概率 and 条件概率的链式法则 and 期望、方差和协方差
  5. 频率响应函数与数字滤波实验_WKD3419振动测试与控制教学实验系统
  6. 关卡 动画 蓝图 运行_UE4入门之路(基础蓝图篇):蓝图的制作
  7. [3.3训练赛]One-Dimensional(矩阵快速幂),Freda的迷宫(无向图强连通分量+并查集),一道防AK好题
  8. html是什么1002无标题,Jsf页面为普通/无标题的文本html
  9. Application.Goto 方法
  10. 广度搜索 -- 9.1 Word Ladder -- 求是否有解 -- 图解
  11. 在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味
  12. 计算机应用程序错误怎么办 6,WinXP电脑应用程序错误怎么办?
  13. # 融云 SDK 新用户入群加载历史消息 记录融云 SDK 的一个小功能,分享一下 ## 背景 项目中有用到融云 SDK 中的群组功能,产品说需要新人入群的时候看到历史消息。 本来以为直接能获
  14. 通过51单片机开发板USB转TTL模块烧录ESP8266-01固件
  15. 如何在Microsoft Excel电子表格之间交叉引用单元格
  16. 计算机上显示找不到无线网络连接,电脑上网时为什么只显示宽带连接不显示无线网络连接?...
  17. 不容错过 食材VRay材质球素材推荐
  18. 怎样进行两台电脑之间的数据传输?
  19. Clipper库 | 坐标圆整和精度控制
  20. 应届生毕业不满一年,从被裁到成功上岸,亲身经历告诉你如何自渡?

热门文章

  1. storm能不能测试wadl_达尔优牧马人A960暴风Storm体验:轻而不飘,精准击打
  2. saltstack 自动化运维管理
  3. 【直播预告 | 阿里云 CDP 公开课】11月25日下午14点准时开讲
  4. 独家下载!2021前端热门技术解读
  5. 从零开始入门 K8s:深入剖析 Linux 容器
  6. (零)音视频技术基础知识,现实项目
  7. 游戏行业的人工智能设计:AI的设计和实施
  8. final,finally,finaliz的区别(Java)
  9. Excel-开发者工具(WPS)
  10. 教你快速掌握如何使用“Opatch”打补丁