0

我需要一些关于如何编程的提示,这种方法适用于刽子手游戏guessCh,是用户猜到secretCh的字母,而是密码中的字母,它们一次来自一个while() loop。但是我需要的是,而不是仅仅if (guessCh != secretCh)因为秘密词由几个字母组成,所以它会从秘密词中的所有字母中减去不应该减去的点,而不是仅仅因为它不起作用。只有在任何字母/或秘密单词中都guessCh找不到字符时,它才应该减去-1。secretCh

我似乎被困住了,我知道这很简单......但是给我一个骨头。我已经花了很多时间在这上面。

private void nTurns(char guessCh, char secretCh) {
    //Create an array that stores already used letters
    if (guessCh != secretCh) {
        nTurnsLeft--;
    }
}
4

3 回答 3

4

您可以对您的秘密中找到的字符进行 ArrayList 处理。然后使用 .contains(Char c)ArrayList 中的方法

一个例子:

ArrayList<Char> secret = new ArrayList<Char>();
secret.add('w');
secret.add('o');
secret.add('r');
secret.add('l');
secret.add('d');

if(secret.contains(new Char('x')) {
    System.out.println("Found");
} else {
    System.out.println("Not Found");
}
于 2012-09-23T18:54:33.273 回答
2

我想这可能是作业,所以gtgaxiola的回答可能是老师不想看到的。以下是如何在普通字符数组上实现等效的 .contains() ,因此您不必在当前代码中进行太多更改。

    char[] secretCh = new char[]{'s', 'e', 'c', 'r', 'e', 't'};
    char guessCh = 'e';

    boolean found = false;
    for(int i = 0; i < secretCh.length; i++) { // loop through each character in the secretCh array
        if (secretCh[i] == guessCh) {
            found = true;
            break;
        }
    }
    if (found)
        System.out.println("guessCh is a letter in the secret word.");
于 2012-09-23T19:08:22.997 回答
2

String 对象已经内置了这个功能。

你真正需要的是这样的:

if(secretStr.indexOf(guessCh) < 0) nTurnsLeft--;

indexOf 返回字符串 secretStr 中字符guessCh 的位置索引。如果未找到guessCh,则indexOf 返回-1;

于 2012-09-23T19:14:18.943 回答