java字母游戏[家庭作业]

标签 java letter

我的家庭作业有问题。我不要求任何代码。我所要求的只是关于如何实现作业的某些部分的一些建议。

分配如下:N 名玩家(n 由用户指定)和一个带有字母的“框”(A-Z,未指定字母数或如问题中所述:无限制)。每个字母都有一个索引。 A=0,B=1,..,Z=25。 每个玩家都会收到一封随机字母。第一个组成大小为 p >= 3(p 由用户给定)且具有以下属性的单词的玩家:字母的索引应按等差顺序排列。例如,如果 p=3,则 ABC 或 ZXV 是获胜组合。

程序应该在每次迭代时显示每个玩家的字母。当一名玩家获胜时,程序应显示获胜的玩家和获胜词。

建议是:使用 Math.random() 和 StringBuilder 处理字符串。

我认为这个程序的入口点是要求用户提供玩家数量。之后我应该生成 N 个对象(给定一个 Player 类)。第一个愚蠢的问题:如何生成 N 个对象。像这样的东西:

for (int i = 0 ; i < n ; i++) {
    Player player1 = new Player();
    //how do I allocate the other objects?
}

有没有办法为字母分配索引?我所能想到的就是用类似的东西生成随机字母:

    Random r = new Random();
    box = new char[9999];
    for (int i = 0; i < 9999; i++){
        box[i]= (char)(r.nextInt(25)+65); //there are 26 letters and A starts on position 65
    }

还有其他想法吗?非常感谢有关如何思考解决此问题的任何建议。

最佳答案

how do I generate N objects

使用列表或数组。大多数惯用的 Java 代码使用列表而不是数组

List<Player> players = new ArrayList<Player>();
for (int i = 0; i < n; i++) {
    players.add(new Player());
}

现在 players 包含所有 n 玩家,要引用特定玩家 k(从 0 到 n - 1),您使用players.get(k) 例如

players.get(k).takeTurn();

会对第 k 个玩家调用 takeTurn

Is there a way to assign indexes to letters?

我不太清楚你的意思,或者你为什么要生成 9999 个字符,但是你生成 9999 个随机字符的方式现在不起作用,因为它会排除“Z”。每当您调用 r.nextInt 时,您实际上指定的 1 超出了您想要的上限。因此,要生成从“A”到“Z”的 9999 个随机字符,您需要

Random r = new Random();
box = new char[9999];
for (int i = 0; i < 9999; i++){
    box[i] = (char)(r.nextInt((int)'Z' - (int)'A' + 1) + 'A');
}

它利用了 char 与 Java 中的整型数字类型共享许多特征这一事实。

关于java字母游戏[家庭作业],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9557737/

相关文章:

java - 如何分割Java字符串但保留其部分内容?

sql - 设置字符串的最后一个字母等于 PostgreSQL

android - 立即在 Android 上显示自动完成

正则表达式将每个单词的第一个字母大写,也在特殊字符(如破折号)之后大写

Python:打印用户输入的常见字母

java - 有没有可能写一个像 python 一样短的随机字母生成器?

Java方法调用顺序

java - Tomcat 数据源 - 连接池

java - java中BufferReader的异常处理

java - 我们如何使用java连接mysql 5.1版本?