Java学习小练习

有bug版本:

package fourday;
import java.util.Arrays;
import java.util.Locale;
import java.util.Random;
import java.util.Scanner;

public class guess_number {
    public static void main(String[] args){
        System.out.println("游戏开始吧:");
        char[] aa = one();
        show(aa);
        System.out.println("开始猜吧!");
        char[] aa_input = input_char();
        show(aa_input);
        int result[] = two(aa,aa_input);
        int score = 500;
        while (result[0] != 5 && result[1] != 5){
            System.out.println("本轮猜对" + result[0] + "个字母," + "其中位置正确" + result[1] + "个字母。");
             aa_input = input_char();
             result = two(aa,aa_input);
             score = score - 10;
        }
        System.out.println("恭喜通关!得分为:" + score);
    }

    //生成五个字符串
    public static char[] one(){
        char[] a1 = new char[5];
        String s = "QWERTYUIOPASDFGHJKLZXCVBNM";
        char c[] = s.toCharArray();
        Random random = new Random();
        for (int i = 0; i < 5; i ++){
            a1[i] = c[random.nextInt(c.length)];
        }
        return a1;
    }

    //输入的字母于与生成的字母做对比
    public static int[] two(char[] a1,char[] input){
        int result[] = new int[]{0,0};
        for (int i = 0;i < a1.length; i++){
            for (int j = 0; j < input.length ; j++){
                if(a1[i] == input[j]){
                    result[0] ++;
                    break;
                }
            }
        }
        for(int i = 0; i < a1.length ; i++){
            if (a1[i] == input[i]){
                result[1]++;
            }
        }
        return result;
    }

    //显示出数组的字母
    public static void show(char arr[]){
        for(char i:arr){
            System.out.print(i);
        }
        System.out.println();
    }

    //输入字母
    public static char[] input_char(){
        System.out.println("请输入5个猜测的字母:");
        Scanner scan = new Scanner(System.in);
        String s = scan.next();
        while(s.length() > 5 || s.length() < 5){
            System.out.println("输入长度不对,请重新输入:");
            s = scan.next();
        }
        s = s.substring(0,5);
        s = s.toUpperCase();
        char input[] = s.toCharArray();
        return input;
    }

//    public static void input_result(int[] a, int score){
//        if (a[0] == 5 && a[1] == 5){
//            System.out.println("恭喜通关!得分为:" + score);
//        }
//        else{
//            System.out.println("本轮猜对" + a[0] + "个字母," + "其中位置正确" + a[1] + "个字母。");
//        }
//    }
}

修改后版本:

package fourday;

import java.util.Scanner;

public class guessing {
    public static void main(String[] args){
        System.out.println("游戏开始!");
        char[] gen = generate();
        System.out.println(gen);
        System.out.println("输入5个猜测的字母:");
        int count = 0;
        while(true){
            Scanner scan = new Scanner(System.in);
            String inputs = scan.next().toUpperCase();
            if (inputs.equals("EXIT")){
                System.out.println("来日再战!");
                break;
            }
            char input[] = new char[5];
            input = inputs.toCharArray();
            int result[] = compare(gen,input);
            if (result[0] == gen.length){
                int score = 100 * gen.length - 10 * count;
                System.out.println("恭喜猜对!" + "得分为:" + score);
                break;
            }else{
                count ++;
                System.out.println("本次猜对" + result[1] + "个字母," + "其中位置正确有" + result[0] + "个!");
            }
        }
    }

    public static char[] generate(){
        char[] chs = new char[5];
        String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        char[] a = s.toCharArray();
        //System.out.println(a.length);
        boolean[] flags = new boolean[a.length];
        //System.out.println(a);
        for (int i = 0; i < 5 ;i++){
            int index;
            do {
                index = (int)(Math.random()*(a.length));
            }while (flags[index] == true);
            chs[i] = a[index];
            flags[index] = true;
        }
        return chs;
    }

    public static int[] compare(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[1]++;
                    if (i == j){
                        result[0]++;
                    }
                    break;
                }
            }
        }
        return result;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值