以下是我的代码:
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&gt;。&lt;
的时间太长了答案 0 :(得分:2)
此行将字符@
等同于整个dth
行或eth
行。没有意义,因为数组行不能等于单个字符。
if (bombBoard[d].equals("@") || bombBoard[e].equals("@"))
相反,访问像这样的单个单元格
if (bombBoard[d][e].equals("@"))
在计数之前,即在你的for循环之前初始化maxTurns
:
maxTurns = 0;
答案 1 :(得分:0)
您需要更改if条件
if (bombBoard[d].equals("@") || bombBoard[e].equals("@"))
到
if (bombBoard[d][e].equals("@"))
您正在使用2D数组,并且array[i][j]
可以为gavin位置填充其值。
答案 2 :(得分: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++;
}
}
}