需求(题目):
随机生成5个不重复的英文字符,全大写,例如:KHXUA
用户输入字符循环开始猜字符,每次猜完以后提示,字母对的个数和位置对的个数
例如用户输入:NBKHA,提示字符对3个位置对1个
满分500分,猜错一次扣5分,位置全对即为正确

分析:
1.随机生成5个不重复的英文字符
2.用户输入(输入的是字符串,转化为字符数组)
3.用户输入和随机生成进行比较(字符对的个数,位置对的个数)
4.计算分数

在随机生成五个不重复的大写字母这个步骤中,我写了两个实现方式,其中一个是老师讲的,利用了开关原理

package cn.tedu.day1016;import java.util.Arrays;
import java.util.Scanner;public class TestGussLetters {public static void main(String[] args) {char[] arr = getGenerateLetters();System.out.println(arr);//看着答案测试System.out.println("游戏开始!请尽情猜测!");//定义猜错的次数int count = 0;//定义一个死循环,让用户不停循环的猜,while(){}循环while(true){System.out.println("请输入你所猜的5个字母序列:(输入EXIT——退出游戏)");char[] chars = getScannerLetters();//定义一个字符数组chars调用获取用户输入的字符串,转为字符数组,与系统的正确答案进行比较String stt = String.valueOf(chars);//将字符数组再转换为字符串与EXIT比较,exit为字符串,字符数组与字符串无法比较if(stt.equals("EXIT")){System.out.println("真笨,游戏结束");break;}System.out.println("您输入的是:"+stt);//直接写chars,因为是引用类型,存的是地址,显示的是地址int[] result = check(arr,chars);//调用比较两个数组的方法,返回字符对的个数,位置对的个数if(result[0] == arr.length){int score = 100 * arr.length - count * 5;System.out.println("恭喜您猜对了,分数为:"+score);break;}else {count++;System.out.println("位置对的个数为:"+result[0]+",字符对的个数为:"+result[1]);}}}//定义获取五个不重复的字母并存到数组的方法getGenerateLetterspublic static char[] getGenerateLetters(){/*方式一:老师教的*//*1.生成要比较的数组,空数组*/char[] chs = new char[5];/*2.随机字符数组的范围,从这个数组抽取不同的元素放入到要生成比较的数组中,固定数组*/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'};/*3.创建中间数组,长度与固定数组一致,使用其下标与固定数组一样,用于随机生成的下标不重复重复了,重新生成下标,获取新的元素*//*4.定义布尔类型的数组,存的是true和false,默认值为false,取到的下标改为true*/boolean[] flag = new boolean[letters.length];/*5.for循环控制 循环生成5个不重复的字符-->字母*/for (int i = 0; i < chs.length; i++) {//chs.length,要比较的数组的长度chs,为5int index;//定义一个int类型,用来存下标的值/*6. do - while 循环,不定义循环的次数,一直循环,直到条件满足,结束循环*/do{/*7.随机生成下标,范围[0,26),用作与布尔类型数组flag[]比较,为false,则没重复,把固定数组letters[]相对应下标元素取出,放到要比较的数组chs[]中*/index = (int)(Math.random()*letters.length);//Math.random(),范围为[0,1),为double,乘26,还为double,要强转为int类型}while (flag[index] == true);/*8.  flag[index] == true循环条件: 随机生成的下标,所对应的布尔类型中的元素是否为false,为true,则之前生成过,为避免重复,要再循环随机生成一个下标为false,则之前没有生成过,为新的下标,把这个下标对应的固定数组letters的元素取出,赋给要比较的数组chs()程序向下执行*//*9.为false,则之前没有生成过,为新的下标,把这个下标对应的固定数组letters的元素取出,赋给要比较的数组chs()*/chs[i] = letters[index];/*10.将中间数组flag[]的值改为true,如果下次生成了一样的下标,再循环生成一个新的下标*/flag[index] = true;}/*方式二:自己写的*//*for (int i = 0; i < chs.length; i++) {//循环生成5个字母chs[i] = (char)(Math.random()*26+65);for (int j = 0;j < i;j++){  //循环判断与之前生成的字母是否相同if (chs[i] == chs[j]){i--;               //相同的话,就i减1,再生成一个新的数break;}}}*/return chs;}//获取用户从控制台输入的字符串存到字符数组中public static char[] getScannerLetters(){/*1.创建一个Scanner对象*/Scanner sca = new Scanner(System.in);/*2.定义一个数接收用户输入的字符串*/String str = sca.nextLine().toUpperCase();//获取输入的字符串并转换为大写/*3.将字符串转换为字符数组*/char[] input = str.toCharArray();//定义一个字符数组接收字符串return input;}//对两个数组进行比较/*比较两个数组,结果要求 位置对的个数,字符对的个数,  个数,是整数,且两个返回两个整数,有int[]数组来存储,result[0]存储 位置对的个数result[1]存储 字符对的个数*/public static int[] check(char[] chs,char[] input){/*1.结果 result[0]存储 位置对的个数result[1]存储 字符对的个数*/int[] result = new int[2];//两个长度的int数组/*2.用for循环,利用下标对两个数组进行比较,就是嵌套for()循环外循环,遍历随机生成的要比较的数组chs内循环,遍历用户输入的字符数组*/for (int i = 0; i < chs.length; i++) {for (int j = 0;j < input.length;j++){if(chs[i] == input[j]){//匹配相对应下标的元素,即字母是否相同result[1]++;//字符相同,个数+1if(i == j){//再判断位置是否相同result[0]++;//位置匹配在字符匹配基础上}}}}return result;}}

测试结果:

猜错三次,3*5=15;扣15分,所以分数为485

java实现猜字母游戏,猜五个大写的字母相关推荐

  1. 从键盘输入一个英文字母,如果它是大写英文字母,则将其转换为小写英文字母,如果它是小写英文字母,则将其转换为大写英文字母,然后将它及其ASCII码值显示到屏幕上,如果不是英文字母,则不转换直接输出到屏幕

    从键盘输入一个英文字母,如果它是大写英文字母,则将其转换为小写英文字母,如果它是小写英文字母,则将其转换为大写英文字母,然后将它及其ASCII码值显示到屏幕上,如果不是英文字母,则不转换直接输出到屏幕 ...

  2. 从键盘输入一个小写英文字母,将其转换为大写英文字母

    #include <stdio.h> //编程从键盘输入一个小写英文字母,将其转换为大写英文字母,将转换后的大写英文字母及其十进制的ASCII码值显示在屏幕上. int main(void ...

  3. python猜字游戏猜三次_python 猜字游戏

    # coding=utf-8 import random print("猜数字游戏开始\n") count = 0 count1 = 0 guessact = random.ran ...

  4. 人与计算机猜数游戏,猜数字(古老的的密码破译类益智类小游戏)_百度百科...

    猜数字 (古老的的密码破译类益智类小游戏) 语音 编辑 锁定 讨论 上传视频 猜数字(又称 Bulls and Cows )是一种古老的的密码破译类益智类小游戏,起源于20世纪中期,一般由两个人或多人 ...

  5. java随堂练习04,猜字游戏猜1-6的数字猜大小和豹子。

    /*** 赌数游戏* 提供三个1-6的随机数,作为掷骰子得到的点数.如果各个点数相同,则为豹子.* 如果三个骰子点数和,小于或等于9,则为"小".* 如果三个骰子点数和,大于9,则 ...

  6. 猜成语游戏c语言代码,拼音首字母猜词语游戏 快乐大本营的一个游戏,给了些拼音的首字母,然后组词,让方块移到对面,这个游戏叫什么名字?...

    快乐大本营的一个游戏,给了些拼音的首字母,然后组词,让方块移到对面,这个游戏叫什么名字? 游戏名字叫'天才笨笨碰'游戏规则两人同时坐在椅子上(椅子会喷气.翻倒和摇晃),随机给出4个活动声母和一个固定声 ...

  7. 初学Java方法猜数字游戏猜1~99中的随机数字

    可在cmd命令行运行. import java.util.*; public class gussNum {public static void main(String[]args){int sj = ...

  8. 猜字游戏猜小输出猜小了猜大输出猜大了猜中结束

    package com.hnsw.app;import java.util.Random; import java.util.Scanner;public class RamdomTea2 {publ ...

  9. 从键盘输入一个小写英文字母,将其转换成大写英文字母后,输出大写英文字母及其对应的十进制ASCII码值.

    #include<stdio.h >int main() {char a , b ;scanf("%c", &a);b = a - 32;printf(&quo ...

最新文章

  1. 2018 区块链技术及应用峰会(BTA)·中国全日程新鲜出炉,更多精彩议题看不停
  2. 谁的bug? 正则 拷贝和粘贴 regulator工具
  3. SAP Commerce Cloud SmartEdit 学习笔记
  4. rstudio 保存_Rstudio学习笔记
  5. 何恺明组又出神作!最新论文提出全景分割新方法
  6. windows 配置 Gitlab、Gitee(码云) 的git开发环境
  7. 世界3大IT服务品牌之一塔塔咨询服务公司发布新品牌宣言
  8. 从turtlesim到贪吃蛇……
  9. java代码实现打气球游戏_关于javascript和css3开发打气球小游戏的完整代码
  10. 企小码会话存档使用教程——删人提醒
  11. 51nod 1677——treecnt
  12. c语言实验设备管理系统设计作业,C语言课程设计实验设备管理系统设计
  13. 移动WEB各种布局开发笔记
  14. 煤矿用计算机,计算机技术在煤矿安全生产中应用
  15. Mircrosoft Visual C++ Runtime Library提示窗口为何黏着桌面
  16. Oracle修改数据库db_name
  17. 我与CSDN的故事《相遇、相知、相爱、相守》
  18. 小孔成像模型中四个坐标系的转换:世界 相机光心 图像毫米 像素
  19. 如何把html传到另一个页面中,如何把一个页面的值传到另一个页面
  20. 炎炎夏日,教大家正确选用净水器的8个要点!

热门文章

  1. K8S客户端Kubectl无法下载问题的解决办法-到中科大USTC下载
  2. Windows进程间通信之剪切板
  3. 施努卡:机器视觉系统作用是什么,原理是什么
  4. pl-slam 运行日志
  5. win10安装loadrunner提示管理员阻止 亲测有效
  6. 天天ASP开发网完成中国仡佬族文化研究会网站建设
  7. 当我用C++开发出一款打字练习程序分析分享
  8. 内存芯片QLC、SLC、MLC、TLC
  9. 怎么用手机png转jpg?手机图片格式转换器推荐
  10. ubuntu源换成清华源_Ubuntu18.04更换国内源(阿里,网易,中科大,清华等源)