【发布时间】:2016-08-10 09:14:58
【问题描述】:
在这个程序中,我想用三个“O”替换随机位置的三个“N”。我尝试使用 forloop 来实现这一点,但是,我得到的“O”的数量是不一致的。我不确定哪个部分出了问题...
static char grid[][];
public static void Board()
{
Random rn = new Random();
grid = new char [3][3];
for(int row = 0; row<grid.length; row++)
{
for(int col = 0; col<grid.length; col++)
{
grid[row][col] = 'N';
for(int i = 0; i<3; i++)
{
grid[rn.nextInt(3)][rn.nextInt(3)] = 'O';
}
System.out.print(grid[row][col]);
}
System.out.println();
}
}
【问题讨论】:
-
如果要替换网格中的 3 个单元格,为什么要使用嵌套循环?只需一个循环就足够了,即循环直到您设置 3 个 Os,例如通过随机选择一个,检查它是否包含除 O 以外的其他内容,然后设置它,如果它已经包含 O,则再取一个,直到设置 3 个 Os。当然,如果选择了相同的单元格,这可能会循环很长时间,因此您可能希望跟踪那些仍然可用的单元格。
-
@john 这是你的内部 for 循环中的一个错误。这实际上有效,因为您的行数与列数相同。你应该对照
grid[row].length检查col。 @Eran 的答案很好 -
请注意,将您的问题标题更改为
closed thread- solved是不可接受的方式来标记您的问题已得到回答。如果您得到了您正在寻找的答案,您应该将该答案标记为已接受(单击它旁边的复选标记)。 -
@Eran 哦,我明白了,我已经标记了,非常感谢!