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
投稿
猜你喜欢
浅谈Android 指纹解锁技术
2023-06-04 18:59:06
Java经典面试题汇总:网络编程
2021-12-12 11:53:33
Android seekbar实现可拖动进度条
2023-04-02 20:34:45
Java关键字synchronized原理与锁的状态详解
2021-11-16 05:30:29
Javaweb实现在线人数统计代码实例
2023-01-17 10:19:24
Java实现FTP上传与下载功能
2021-09-22 18:28:51
Android AIDL和远程Service调用示例代码
2022-07-14 03:06:15
Java为何需要平衡方法调用与内联
2023-01-02 20:37:22
java中LinkedList使用迭代器优化移除批量元素原理
2021-12-05 11:26:07
BufferedInputStream(缓冲输入流)详解_动力节点Java学院整理
2022-01-08 07:02:41
Spring注解配置实现过程详解
2022-04-06 11:12:52
Android 中CheckBox多项选择当前的position信息提交的示例代码
2022-05-15 19:13:51
Java创建线程的两种方式
2023-09-12 05:20:55
aop的实现原理_动力节点Java学院整理
2022-04-02 16:09:21
spring Bean的初始化过程解析
2022-10-13 18:10:01
Android中获得正在运行的程序和系统服务的方法
2023-01-19 21:05:42
Android从服务器获取图片的实例方法
2022-08-27 04:03:46
ADO.NET实用技巧两则
2021-12-26 12:48:32
Android Dialog 动画实例详解
2022-10-22 22:24:29
java 类加载机制和反射详解及实例代码
2023-11-30 06:42:20