【发布时间】:2015-01-07 14:46:43
【问题描述】:
我正在尝试使用二维数组中随机坐标中的字符(例如 A)填充 5 x 5 的二维数组。当我使用我的嵌套 for 循环时,我想制作 2d 数组的坐标,其中我的 char 将是随机的。所以假设我要求 40% 的 A,在 5 x 5 中我应该得到 10 个 A,但我得到 8 个。当我运行它时,它有时不会显示我想要的 A 的百分比。它只会像 6 一样打印出来。这是因为当 if 语句中的 row 和 col 是随机的,for 循环中的 row 和 col 也是随机的吗?这就是为什么 char 有时填充的数量少于要求的数量,因为如果数字随机化 2d 数组的长度为 5,for 循环就会停止?
此外,当它打印出 10 个字符时,有时它们会超过 5 乘 5。例如,第 2 行中的 2 As 和第 3 行中的 7 和第 3 行中的 1。这是为什么呢?
public static void grid(char[][] arr, int percentofchar)
{
double charx = 0.0;
double totalpercentchar = 0;
totalpercentchar = (double) percentofchar / 100;
cellx = totalpercentchar * (arr.length * arr.length);
for (int row = 0; row < arr.length; row++)
{
for (int col = 0; col < arr[row].length; col++)
{
if (charx > 0)
{
row = (int) (Math.random() * arr.length);
col = (int) (Math.random() * arr.length);
charx--;
arr[row][col] = 'A';
System.out.print(arr[row][col] + " ");
}
}
System.out.println();
}
}
【问题讨论】:
-
这是您的原始代码吗?
cellx看起来应该是charx? -
是的,我首先做了 cellx 来制作我的 char 'X' 但后来意识到它可能是任何 char 所以改了名字,错过了谢谢你指出来!
-
还有一堆类的代码有些相同,可以尝试不同的方法,这可能就是我错过它的原因。