更改数组列表中的值?

时间:2016-05-16 01:44:50

标签: java arrays string arraylist

for(int i = 0; i <= gameWord.length()-1; i++)
    {
        if(guessLetter.charAt(0) == (gameWord.charAt(i)))
        {
            hideword[i] = guessLetter.charAt(0);
        }
        else if(guessLetter.charAt(0) != (gameWord.charAt(i)))
        {
            System.out.print("_" + " ");
        }
    }

我正在制作一个刽子手游戏,我创建了一个名为hideword的数组列表。隐藏字会为用于游戏的单词中的每个字母打印下划线。我试图找到一个方法,将下划线与用户猜测的字母交换。但是这段代码

hideword[i] = guessLetter.charAt(0);

不起作用。它给了我“需要数组,但发现java.util.ArrayList

有人帮忙吗?

2 个答案:

答案 0 :(得分:3)

然后,hideword必须是一个arraylist。使用hideword.set(index, character)进行分配,而不是像数组一样访问它。

答案 1 :(得分:0)

var obj_list = '<div class="list-group">'; 不是数组,它是ArrayList实现(但是,它的实现是支持一个数组 - 因此名称)。

List声明为hideword

的数组
char

并在使用前初始化它:

private char[] hideword;

您的代码在不改变其基本意图的情况下可以大大简化:

  • 无需从长度中减去hideword = new char[gameword.length]; ,只需更改比较运算符
  • 即可
  • 1中没有if - 我们已经知道它不相等,因为我们在else区块
  • 而不是无用的打印,为数组插槽分配下划线
  • 最后打印一个

像这样:

else

如果for (int i = 0; i < gameWord.length(); i++) { if (guessLetter.charAt(0) == (gameWord.charAt(i))) { hideword[i] = guessLetter.charAt(0); } else { hideword[i] = '_'; } } // print hideword 不存在,您的代码会更简单,而您在测试时只需hideword每个字符。