首页 > 解决方案 > 如何在java上创建一个随机字母猜谜游戏

问题描述

我正在尝试在 java 上创建一个猜谜游戏。用户要猜测计算机已经生成的字母表中的一个字母。应包括小写和大写字母,但猜测“A”等价于猜测“a”。我正在尝试创建一个循环,反复询问一个字母,直到用户猜出计算机的字母。在每次猜错之后,我需要告诉用户他们的字母是在正确字母之前还是之后。

我不知道如何使用带有大写和小写字母的 Random 类。我不知道如何将其转换为数字来判断猜测是之前还是之后。

import java.util.Random;
import java.util.Scanner;

public class GuessLetter {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
Random ran = new Random();

String alphabet="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

int N= alphabet.length();

char a =(alphabet.charAt(ran.nextInt(N)));

Scanner scanner=new Scanner(System.in);

System.out.println("Enter a letter:");

String i= scanner.nextLine();

char b =(i.charAt(0));

while  {

标签: java

解决方案


我不知道如何将其转换为数字来判断猜测是之前还是之后。

尝试使用 aMap来了解每个字符的位置:

public static final String lowerCase = "abcdefghijklmnopqrstuvwxyz";
public static final String upperCase = lowerCase.toUpperCase();
public static final Map<Character, Integer> charMap = new HashMap<>();

static {
    for (Character c : lowerCase) {
        charMap.put(c, lowerCase.indexOf(c));
    }

    for (Character c : upperCase) {
        charMap.put(c, upperCase.indexOf(c));
    }
}

我不知道如何使用带有大写和小写字母的 Random 类

通过上述设置,您只需从upperCaseor中获取一个随机字符lowerCase并找到该字符在地图中的位置。

public static final String allCharacters = lowerCase + upperCase;
public static final Random rand = new Random();

static {
    char randomChar = allCharacters.charAt(rand.nextInt(allCharacters.size()));
    int position = charMap.get(randomChar);
}

推荐阅读