Я пытаюсь заполнить свой 2d-массив, который равен 5 на 5 с символом, таким как A в случайных координатах в массиве 2d. Когда я использую свой вложенный цикл for, я хотел бы сделать координаты массива 2d, где мой char будет случайным. Так что давайте скажем, что я попросил 40 процентов A, в 5 на 5 я должен получить 10 A, но я получаю 8. Когда я запускаю его, он не показывает процентного количества A, которого я хотел иногда. он будет печататься только как 6. Это потому, что когда строка и col в операторе if рандомизированы, то есть строка и col в цикле for? Именно поэтому char иногда заполняет меньше, чем запрос, потому что цикл for останавливается, если число рандомизирует длину массива 2d, который равен 5?Java Math.random с массивами
Также, когда он распечатывает 10 символов, иногда они проходят по 5 на 5. Пример будет равен 2 Как в строке, так и 7 во втором и 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', но потом понял, что это может быть любой символ, так что изменил имя, пропустил это, спасибо, указав его! –
также имел кучу классов с одним и тем же кодом, чтобы попробовать разные способы, чтобы быть причиной, почему я пропустил это. –