java实现猜字母游戏

作者:复杂先森* 时间:2021-11-19 22:25:28 

本文实例为大家分享了java实现猜字母游戏的具体代码,供大家参考,具体内容如下

案例需求:

StepOne:

系统随机生成一组随机的字符数组(不重复)

StepTwo:

控制台输入一组字符串与系统生成的字符数组进行对比

StepThree:

若控制台输入与系统随机生成的不符则提示字符正确个数及对位正确个数

StepFour:

若控制台输入与系统随机生成的完全一致则提示“恭喜你猜对了,游戏结束”程序退出。若不完全一致则需要一直猜

StepFive:

若控制台输入的是EXIT则提示“游戏终止”程序退出

StepSix:

若控制台输入的数组长度不符则提示“年轻人不讲武德,长度不符,耗子尾汁!”

具体代码实现:


package game;

import java.util.Scanner;

public class GuessLetters {
/**
* 将随机生成一个字母数组的逻辑封装成一个方法
**/
public static char[] Nonce(){
char[] random=new char[5];//不重复的随机字母数组,长度5
// 存储可能出现的字母的char数组(库)
char[] warehouse={
'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'
};
// 创建一个boolean类型的变量(长度是warehouse的长度)来记录使用过的warehouse数组的元素
boolean[] warehouseOne=new boolean[warehouse.length];
for (int i=0;i<random.length;i++){//遍历random数组中的每个元素
int index;
do {//随机warehouse长度的下标
// 创建一个index变量随机生成warehouse数组长度的下标
index=(int)(Math.random()*warehouse.length);
}while (warehouseOne[index]==true);
// 将warehouse[index]中的元素赋值给random[i]元素
random[i]=warehouse[index];
// 在boolean类型的warehouseOne数组中对应的index元素改为true(以做标记)
warehouseOne[index]=true;
}
return random;
}
/**
*将(判断系统随机的char类型字母数组和用户输入的字符串对比,并输出字母正确个数和对位正确个数)的逻辑封装成方法
**/
public static int[] contrast(char[] random, char[] input){
int[] result=new int[2];//result[0]字母对个数,result[1]对位对个数
for (int i=0;i<input.length;i++){//遍历input数组
for (int j=0;j<random.length;j++){//遍历random数组
if (input[i]==random[j]){//对比字符对对错
result[0]++;//字符正确个数+1
if (i==j){//对比对位对错
result[1]++;
}
break;//当字符对时 无需继续对比后面的元素,跳出循环。
}
}
}
return result;
}
/*主方法(main)中整理且运行封装好的方法*/
public static void main(String[] args) {
// 调用random方法,来产生一个随机的char字符数组
char[] chs=Nonce();
System.out.println(chs);//作弊
// 控制台输入
Scanner sc = new Scanner(System.in);
// 创建一个变量result数组存储字符正确,对位正确个数
// 错误次数
int mistake=0;
do {//需求当没有猜对时,一直猜
// 友好提示
System.out.println("请输入五个不重复的字母");
// 接受输入的字符串inputOne将inputOne转换成大写
String inputOne = sc.next().toUpperCase();
// 需求:控制台输入EXIT,则程序退出
if ("EXIT".equals(inputOne)){//判断接收的字符是否是EXIT
break;//跳出循环,程序结束
}
// 将字符串类型数组转换成char类型数组
char[] input = inputOne.toCharArray();
// 需求:控制台如若输入的字符长度与随机字符长度不符则友好提示
if (result[2]!=chs.length){//判断长度是否一致
// 调用对比逻辑的方法contrast
int[] result = contrast(chs, input);
// 需求:如果猜对了,则友好提示,且程序终止
if (result[1]==chs.length) {//判断对位正确个数是否与随机的数组长度一致
// 友好提示
System.out.println("恭喜你猜对了,游戏结束!");
break;//条数循环,程序结束
}else{
// 输出结果(字符正确个数,对位正确个数)
System.out.println("字符正确个数:" + result[0] + "\t对位正确个数:" + result[1]+"\n继续猜");
// 需求:记录错误次数
mistake++;//错误次数+1
}
}else{
// 友好提示
System.out.println("年轻人不讲武德,长度不符,耗子尾汁");
}
}while (true);
}
}

来源:https://blog.csdn.net/qq_54177999/article/details/114262107

标签:java,猜字母
0
投稿

猜你喜欢

  • Maven打包jar包没有主属性问题解决方案

    2023-11-25 06:56:32
  • 浅谈java的接口和C++虚类的相同和不同之处

    2023-08-05 12:01:51
  • C# DataGridView添加新行的2个方法

    2023-06-23 05:42:19
  • Java8新特性之默认方法(default)浅析

    2023-10-03 10:41:13
  • Android带进度条的文件上传示例(使用AsyncTask异步任务)

    2023-06-24 09:43:11
  • Flutter之Timer实现短信验证码获取60s倒计时功能的代码

    2023-07-20 20:00:30
  • JAVA各种OOM代码示例与解决方法

    2023-01-23 04:28:00
  • 使用Spring Data Redis实现数据缓存的方法

    2021-08-02 10:19:25
  • Android四大组件之broadcast广播使用讲解

    2023-07-27 12:41:50
  • java实现科研信息管理系统

    2022-05-13 02:49:41
  • MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)

    2023-04-15 03:34:50
  • 关于C#操作文件路径(Directory)的常用静态方法详解

    2023-06-06 10:40:12
  • 在SpringBoot中配置Thymeleaf的模板路径方式

    2021-11-26 17:34:26
  • 解决feign调用接口不稳定的问题

    2022-01-13 19:28:46
  • Intelli IDEA安装Scala插件并安装Scala软件和配置环境变量的详细教程

    2023-02-16 23:49:01
  • Spring Boot启动端口修改方法

    2022-11-21 19:37:53
  • 轻松理解Java面试和开发中的IoC(控制反转)

    2023-08-10 03:00:35
  • Java调用WebService接口作测试

    2023-08-11 17:00:20
  • java实现多文件上传至本地服务器功能

    2022-01-26 11:55:24
  • springboot+vue制作后台管理系统项目

    2022-02-26 06:08:37
  • asp之家 软件编程 m.aspxhome.com