java实现猜字母游戏

 更新时间:2021年03月04日 17:44:07   作者:复杂先森*  
这篇文章主要为大家详细介绍了java实现猜字母小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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);
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java多线程并发编程 Synchronized关键字

    Java多线程并发编程 Synchronized关键字

    现有一成员变量 Test,当线程 A 调用 Test 的 synchronized 方法,线程 A 获得 Test 的同步锁,同时,线程 B 也去调用 Test 的 synchronized 方法,此时线程 B 无法获得 Test 的同步锁,必须等待线程 A 释放 Test 的同步锁才能获得从而执行对应方法的代码
    2017-05-05
  • IDEA巧用Postfix Completion让码速起飞(小技巧)

    IDEA巧用Postfix Completion让码速起飞(小技巧)

    这篇文章主要介绍了IDEA巧用Postfix Completion让码速起飞,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 浅析打开eclipse出现Incompatible JVM的解决方法

    浅析打开eclipse出现Incompatible JVM的解决方法

    本篇文章是对打开eclipse出现Incompatible JVM的解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • java ReentrantLock条件锁实现原理示例详解

    java ReentrantLock条件锁实现原理示例详解

    这篇文章主要为大家介绍了java ReentrantLock条件锁实现原理示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 利用idea快速搭建一个spring-cloud(图文)

    利用idea快速搭建一个spring-cloud(图文)

    本文主要介绍了idea快速搭建一个spring-cloud,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • selenium操作隐藏的元素(python+Java)

    selenium操作隐藏的元素(python+Java)

    这篇文章主要介绍了selenium操作隐藏的元素(python+Java),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • SpringBoot整合RedisTemplate实现缓存信息监控的基本操作

    SpringBoot整合RedisTemplate实现缓存信息监控的基本操作

    SpringBoot中的 redistemplate 是一个用于操作 Redis 数据库的高级模板类,它提供了一组方法,可以方便地执行常见的 Redis 操作,如存储、检索和删除数据,本文给大家介绍了SpringBoot整合RedisTemplate实现缓存信息监控的基本操作,需要的朋友可以参考下
    2025-02-02
  • Nacos心跳时间配置及服务快速上下线方式

    Nacos心跳时间配置及服务快速上下线方式

    这篇文章主要介绍了Nacos心跳时间配置及服务快速上下线方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java数据存储的“双子星”对决(Map和Set的区别)

    Java数据存储的“双子星”对决(Map和Set的区别)

    文章主要介绍了Java中Map和Set两种数据结构的定义、实现、方法及应用场景,Map用于存储键值对,键唯一,值可重复;Set用于存储唯一元素,无序,两者都提供了丰富的操作方法,如添加、删除、查找等,感兴趣的朋友一起看看吧
    2025-02-02
  • Java实现解析.xlsb文件的示例代码

    Java实现解析.xlsb文件的示例代码

    这篇文章主要为大家详细介绍了Java实现解析.xlsb文件的相关方法,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
    2023-01-01

最新评论