0

下面是我的代码:

public int maxTurns = 0;
public String[][] bombBoard = new String[9][9];

...

public void loadBombs()
{
    //loadArray();
    Random randomGen = new Random();
    for (int u=1; u<=9; u++)
    {
        int randomRow = randomGen.nextInt(9);
        int randomCol= randomGen.nextInt(9);
        bombBoard[randomRow][randomCol] = "@";
    }

    //counting @'s -- setting variable
    for (int d = 0; d < bombBoard[bombRow].length; d++)
    {
        for (int e = 0; e < bombBoard[bombCol].length; e++)
        {
            if (bombBoard[d].equals("@") || bombBoard[e].equals("@"))
            {
                maxTurns++;
            }
        }
    }

我要做的就是计算多维数组中 (@) 的数量,并将其分配给一个名为 maxTurns 的变量。

可能很简单,只是今晚很难过。离开 Java 的时间太长了>.<

4

3 回答 3

2

此行将字符等同于@dth行或整eth行。真的没有意义,因为数组行不能等于单个字符。

if (bombBoard[d].equals("@") || bombBoard[e].equals("@"))

相反,像这样访问单个单元格

if (bombBoard[d][e].equals("@"))

并在计数之前初始化maxTurns,即在你的 for 循环之前:

maxTurns = 0;
于 2013-11-15T02:11:42.447 回答
0

You need to change the if codition

       if (bombBoard[d].equals("@") || bombBoard[e].equals("@"))

to

       if (bombBoard[d][e].equals("@"))

You are using 2D Array, and do array[i][j] can populate its value for a gavin position.

于 2013-11-15T02:13:58.270 回答
0

你想从整个数组还是数组的某些部分计算?

从您上面给出的代码片段中,我无法确定您是如何迭代数组的,因为我不确定是什么

bombBoard[bombRow].length  and  bombBoard[bombCol].length

但是如果你想迭代整个数组,认为你应该只使用:

for (int d = 0; d < 9; d++) // as you declared earlier, the size of array is 9
{
    for (int e = 0; e < 9; e++) // as you declared earlier, the size of array is 9
    {
        if (bombBoard[d][e].equals("@"))
        {
            maxTurns++;
        }
    }
}
于 2013-11-15T02:23:56.570 回答