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

if 条件を変更する必要があります

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

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

2D 配列を使用しており、 array[i][j]その値をギャビン位置に入力できます。

于 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 に答える