JAVA---猜字游戏

4 篇文章 0 订阅
/**
 * 猜字符游戏 1.设计数据结构 
 * a.char[] chs;//随机生成的字符数组
 *  b.char[] input;//用户输入的字符数组 
 *  c.int
 * letterRight;//字符对的个数 
 * D.int positionRight;//位置对的个数 
 * e.int[] result;//对比的结果
 * f.int score;//得分 
 * g.int count;//猜错的次数 
 * 2.设计程序结构: 
 * 方法 
 * 主方法:main方法
 * 随机生成字符数组:public static char generate(){
 * char[] chs=new char[5];
 *....
 * return chs;
 * }
 * 
 * 对比随机生成字符数组和用户输入字符数组
 * public static int[] check(char[] chs,char[] input) {
 * int[] result=new int[2];
 * return result;
 * }
 * 3.设计算法
 *
 */
public class Guessing {
    //主方法
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        char[] chs=generate();//随机生成字符数组
        System.out.println(chs);
        int count=0;
        while(true) { 
            System.out.println("请输入您猜的字符:");
            String str = scanner.next();
            if(str.equal("exit")) {
                System.out.println("退出游戏,下次再见!!");
                break;
            }
            char[] input=str.toCharArray();//用户定义的字符数组----str.toCharArray()字符串转换为字符数组
            int[] check=check(chs,input);//对比数组方法调用
            if((check[0]==5)&&(check[1]==5)) {
                System.out.println("恭喜你猜对了,最终得分:"+(500-count*10)+"分");
                break;
            }else {
                count++;
                System.out.println("字符对:"+check[0]+"个     "+"位置对:"+check[1]+"个");
            }
        }

    }

    //随机生成字符数组
    public static char[] generate() {
        char[] chs=new char[5];
        //算法
        for(int i=0;i<chs.length;i++) {
            char c=(char)(Math.random()*25+65);//随机生成字符
            boolean flag=true;//开关
            for(int j=0;j<chs.length;j++) {
                if(c==chs[j]) {// A 0 0 0 0
                    flag=false;
                    i--;//防止不赋值而造成字符数组元素为空
                    break;
                }
            }
            if(flag) {
                chs[i]=c;//存储字符
            }
        }
        return chs;//返回字符数组
    }
    //对比随机生成字符和用户输入字符数组
    public static int[] check(char[] chs,char[] input) {
        int[] result=new int[2];//对比结果     存放字符对的个数以及位置对的个数
        //算法
        for(int i=0;i<chs.length;i++) {//遍历随机字符数组
            for(int j=0;j<input.length;j++) {//遍历用户定义的字符数组
                if(chs[i]==input[j]) {
                    result[0]++;//字符比较  加1
                    if(i==j) {
                        result[1]++;//位置比较 加1
                    }
                    break;//跳出内循环
                }
            }
        }
        return result;
    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰河家园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值