【发布时间】:2023-03-21 14:08:01
【问题描述】:
我有一个 2D 数组,它有 5 行和 5 列。我想要它,以便在该二维数组中的 8 个随机点(让它选择一个随机的行和列)放置一个 '1' 的字符。
我所做的是调用 Random 类并生成一个介于 0 和 4 之间的数字(对于数组的 5 个点)然后我有两个 for 循环运行 8 次(对于我想要的 8 个随机点),一个穿过行,另一个穿过列。
这是我目前的代码:
char[][] battleship = new char[5][5];
//I didn't include this but I have a for loop that populates all the rows and columns with a char of '0'
Random random = new Random();
int randomNum = random.nextInt(4);
for (int i = 0; i < 8; i++)
{
for (int o = 0; o < 8; o++)
{
battleship[randomNum][randomNum] = '1';
}
}
我遇到的问题是,它不是将“1”放在 8 个随机位置,而是将 5 个位置背靠背放置。
我该如何纠正这个问题?
这是一个输出示例:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0
“1”不在 8 个随机位置。
我哪里做错了?
【问题讨论】:
-
我不会评论您的实际问题,因为您在下面发布了一些有效的解决方案,但您应该使您的 for 循环计数和数组大小匹配。现在您的
battleship数组有 25 个元素,但您正在尝试循环 64 个元素。 -
我不相信发布的代码可以创建包含这些内容的数组。
-
根据您发布的代码,您应该有一个“1”。你如何打印数组?你有更多的动作吗?