问题
        实现猜字母游戏中的字母生成方法,即,随机生成5个不同的字母作为猜测的结果。

方案
        实现generate方法,首先声明一个字符类型的数组,用于存储26个大写字母,然后声明一个boolean类型的数组,其长度也为26。此数组中的初始值均为false,意味着,程序起始,没有任何字母被选中。如果某个字母被选中,则同时设置该字母在boolean类型数组中对应位置上的值为true,表示该字母被选中过。

然后,使用嵌套循环:外层循环用于控制所生成的字母个数,即,循环5次,以产生5个字母;而内层循环则用于判断所生成的字母是否重复。generate方法的程序流程如图所示:

步骤
        实现此案例需要按照如下步骤进行。

步骤一:构建存储所有字母的数组
        在generate方法中,首先定义char类型的数组变量letters,用于存放26个大写字母,然后定义boolean类型的数组变量flag,flag数组的大小和letters数组的大小相同,用于记载某字母是否被选中,以便于判断字母是否重复。代码如下所示:

public static char[] generate(){
        char[] chs=new char[5];
        
        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'};
        boolean flags=new boolean[letters.length];
        return chs;
    }
步骤二:随机选择5个不同的字母
        使用嵌套循环,随机选择5个不同的字母,并且这五个字母不相同。代码如下所示:

public static char[] generate(){
        char[] chs=new char[5];
        
        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'};
        boolean[] flags=new boolean[letters.length];
        
        for(int i=0;i<chs.length;i++){
            int index;
            do{
                index=(int)(Math.random()*(letters.length));
            }while(flags[index]);//判断生成的字符是否重复
            chs[i]=letters[index];
            flags[index]=true;    
        }
        
        return chs;
    }
---------------------

Java入门第39课——猜字母游戏之实现字母生成方法的更多相关文章

  1. Java入门第38课——猜字母游戏之设计程序结构

    问题        本案例需要实现猜字母游戏程序中的程序结构 方案        分析猜字母游戏可以看出,程序首先需要随机产生5个不同的字母作为需要猜测的结果,因此,可以先定义一个方法,以实现此功能: ...

  2. Java入门第37课——猜字母游戏之设计数据结构

    问题        有猜字母游戏,其游戏规则为:程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串.玩家可以猜测多次,每猜测一次,则由系统提示结果.如果猜测的完全正确,则游戏结 ...

  3. Kotlin入门第四课:简单工厂模式

    Kotlin基础知识的学习,请参考之前的文章: Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android ...

  4. Android零基础入门第39节:ListActivity和自定义列表项

    原文:Android零基础入门第39节:ListActivity和自定义列表项 相信通过前两期的学习,以及会开发最简单的一些列表界面了吧,那么本期接着来学习更多方法技巧. 一.使用ListActivi ...

  5. java入门第五步之数据库项目实战【转】

    在真正进入代码编写前些进行一些工具的准备: 1.保证有一个可用的数据库,这里我用sql server 2000为例,2.拥有一个ide,如ecelise或myeclipse等,这里我使用的是myecl ...

  6. 第二节:Java入门第一行代码

    前言 大家好,今天带来Java入门第一行代码的概述,希望你们喜欢 第一行代码 学习Java基础课程,学会使用eclipse,eclipse为Java集成开发坏境IDE,创建第一个Java源文件代码: ...

  7. Android零基础入门第89节:Fragment回退栈及弹出方法

    在上一期分享的文章末尾留了一个课后作业,有去思考如何解决吗?如果已经会了那么恭喜你,如果还不会也没关系,本期一起来学习. 一.回退栈 在前面两期的示例中,当我们完成一些操作后,如果想要回到操作之前的状 ...

  8. java使用for循环做猜数字游戏

    package org.llh.test;import java.util.Random;import java.util.Scanner;/** * 猜数字游戏 *  * @author llh * ...

  9. Kotlin入门第三课:数据类型

    前文链接: Kotlin学习第一课:从对比Java开始 Kotlin入门第二课:集合操作 初次尝试用Kotlin实现Android项目 Kotlin的数据类型与Java类似,因此这篇文章主要看Kotl ...

随机推荐

  1. iOS SHA加密算法的实现

    - (NSString *)SHAStringWithSourceData:(NSData *)data type:(SHAType)type{ int shaDigestLength; switch ...

  2. YTU 2916: Shape系列-2

    2916: Shape系列-2 时间限制: 1 Sec  内存限制: 128 MB 提交: 268  解决: 242 题目描述 小聪不喜欢小强的Shape类,声称用Shape类做出的形状不真实,于是小 ...

  3. POJ - 1422 Air Raid(DAG的最小路径覆盖数)

    1.一个有向无环图(DAG),M个点,K条有向边,求DAG的最小路径覆盖数 2.DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中的最大匹配数 3. /* 顶点编号从0开始的 邻接矩阵(匈牙利算 ...

  4. FWT [BZOJ 4589:Hard Nim]

    4589: Hard Nim Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 275  Solved: 152[Submit][Status][Disc ...

  5. bzoj 3809 Gty的二逼妹子序列 —— 莫队+分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3809 据说一开始应该想到莫队+树状数组,然而我想的却是莫队+权值线段树... 如果用权值线段 ...

  6. bzoj1426 (洛谷P4550) 收集邮票——期望

    题目:https://www.luogu.org/problemnew/show/P4550 推式子……:https://blog.csdn.net/pygbingshen/article/detai ...

  7. virtualbox安装完系统之后重新启动重新进入安装界面原因

    安装完成之后如果重新启动出现卡死的情况,直接关闭掉virtualbox,然后重新启动. 在这里记得完成安装后再改下设置,把Storage里的IDE控制器设为没有盘片,否则下次启动时又是安装界面.

  8. hdu4417(离线操作 + 树状数组)

    题意: 给定一个长度为n的数组,有m次的查询,每次查询[a,b]区间里比H小的数有多少个? 由于n和m的取值范围为0到10的5次方,所以直接回答会超时,所以考虑先读入所有的查询操作,然后依次回答比H小 ...

  9. SQL2008中Merge的用法(转)

    在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge ...

  10. Codeforces Round #325D (Div. 2) (DP)

    题目链接: D. Phillip and Trains 分析:dp 我们先初始化,dp[i]表示当前列第i行是否可达,r[i]表示上一个dp值,接下来从头搜到尾 如果该位置满足s[i+1]=='.'且 ...