• 学习java的第三天,猜字符的小程序


    关于猜字符的小程序

    主要实现:随机输出5个字母,用户输入猜测的字母,进行对比得出结果

    主要有3个方法:主方法main();

            产生随机字符的方法generate();

            比较用户输入的字符与随机产生的字符的方法check();

    主要的数据:char[] chs;  //保存随机产生的字符数组

          char[] input;  //保存用户输入的字符数组

                     count ;          //保存猜测的错误次数

          score;           //保存分数

          boolean[] flags;  //开关数组,避免随机产生相同的字符

          int[] result;   //保存结果

    详细代码:

        

     1 package com.tedu.demo;
     2 
     3 import java.util.Scanner;
     4 
     5 /*
     6  * Guessing类实现猜字符游戏
     7  *     1、通过随机产生字母,用户输入猜的字母,进行对比
     8  *     2、输出每次猜测的正确字母,与位置
     9  *     3、产生分数
    10  *     
    11  * */
    12 
    13 public class Guessing {
    14     public static void main(String[] args) {
    15         Scanner scan = new Scanner(System.in);
    16         char[] chs = generate();// 获取随机数组
    17         System.out.println(chs);//作弊
    18         
    19         int count = 0;
    20         
    21         
    22         while (true) {
    23             System.out.println("请输入你猜测得字符:");
    24             String str = scan.next().toUpperCase();//接收用户输入的字符,并将小写转换为大写
    25             if(str.equals("EXIT")){
    26                 System.out.println("下次再猜吧!!!");
    27                 break;
    28             }
    29             char[] input = str.toCharArray(); // 将字符串转换为字符数组;
    30             
    31             int[] result = check(chs, input); // 获取用户输入的字符数组与随机数组的比较结果
    32             if (result[0] == chs.length) {
    33                 int score = 100 * chs.length - 10 * count;
    34                 System.out.println("猜测正确,得分" + score);
    35                 break;
    36             } else {
    37                 count++;
    38                 System.out.println("你猜对了" + result[1] + "个字符,位置对了" + result[0]
    39                         + "个,猜测错误,请继续猜吧!!!");
    40                 
    41             }
    42         }
    43         // System.out.println(chs);
    44     }
    45 
    46     // 随机生成字母方法
    47     public static char[] generate() {
    48         char[] letter = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
    49                 'K', 'L', 'M', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
    50                 'X', 'Y', 'Z' };
    51         char[] chs = new char[5];
    52         // 设置开关数组,
    53         boolean[] flags = new boolean[letter.length];
    54 
    55         for (int i = 0; i < chs.length; i++) {
    56             int index;
    57             do {
    58                 // 生成随机的下标
    59                 index = (int) (Math.random() * letter.length);
    60             } while (flags[index] == true);
    61             // 生成的字母就是letter数组随机下标
    62             chs[i] = letter[index];
    63             flags[index] = true; // 把用过的下标的flags值改为true
    64         }
    65 
    66         return chs;
    67     }
    68 
    69     // 比较用户输入的字母与随机产生字母
    70     public static int[] check(char[] chs, char[] input) {
    71         int[] result = new int[2];
    72 
    73         for (int i = 0; i < chs.length; i++) {
    74             for (int j = 0; j < input.length; j++) {
    75                 if (chs[i] == input[j]) { // 判断字符是否有正确的
    76                     result[1]++; // 字符正确+1
    77                     if (i == j) { // 判断位置是否正确
    78                         result[0]++; // 位置正确+1
    79                     }
    80                 }
    81 
    82             }
    83         }
    84         return result;
    85     }
    86 
    87 }
  • 相关阅读:
    [转]Java 的强引用、弱引用、软引用、虚引用
    无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET
    [转]理解水平扩展和垂直扩展
    Uva 12299 带循环移动的RMQ(线段树)
    Codeforces 758D Ability To Convert(区间DP)
    Codeforces 758C Unfair Poll
    Codeforces 758B Blown Garland
    Codeforces 758A Holiday Of Equality
    LA 3938 动态最大连续和
    Uva 11235 RMQ问题
  • 原文地址:https://www.cnblogs.com/msn-z/p/6940856.html
Copyright © 2020-2023  润新知