学习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 }