Я решаю проблему, когда я пытаюсь получить процент символов и произвольно заполнять их в массиве 5x5, используя Math.random для хранения 25 элементов в массиве 2d. Я придумал это прямо сейчас, но я не понимаю, почему он не заполняет символы, которые я хочу. Он выполняет только «X», а не случайным образом, он, похоже, находится в порядке с общим числом X. Я пытаюсь вывести процент от X, O и того, что когда-либо осталось пустым. Он выводит только 10 X, и они, похоже, не рандомизированы. Я был бы признателен за любые советы, которые я могу понять, почему это происходит.Как создать двумерный массив символов со случайными символами?
public static void main(String []args){
char [][] tissue = new char [5][5];
assignCellTypes(tissue,40,40);
}
public static void assignCellTypes(char[][] tissue,int percentO, int percentX){
double cellx=0.0;
double cellO=0.0;
double totalO=0;
double totalX = 0;
totalO = (double)percentO/100;
totalX = (double)
percentX/100;
cellx = totalX *(tissue.length*tissue.length);
cellO = totalO *(tissue.length*tissue.length);
int i;
int j ;
for(int row = 0;row<tissue.length;row++){
for(int col = 0;col<tissue[row].length;col++){
if(cellx>0){
i = (int)Math.floor(Math.random()*tissue.length);
j = (int)Math.floor(Math.random()*tissue.length);
tissue[i][j] = 'X';
System.out.print(tissue[i][j] + " ");
cellx--;
if(cellO>0 && tissue[i][j] != 'X'){
i = (int)Math.floor(Math.random()*tissue.length);
j = (int)Math.floor(Math.random()*tissue.length);
tissue[i][j] = 'O';
System.out.print(tissue[i][j] + " ");
cellO--;
if(tissue[i][j] != 'X' && tissue[i][j] != 'O'){
tissue[i][j] = ' ';
System.out.print(tissue[i][j] + " ");
}
}
}
}
System.out.println();
}
}
}
То, что я пытаюсь достичь заполнить массив символов случайным образом с определенной Percenta ge of X и O. Так что, если мой массив может заполнить 25 элементов (массив 5x5), а мой X-процент и O - 40, то 10 O и 10 X, а остальные пять я хочу быть пустыми. Все случайным образом через Math.random(). Я получаю случайный способ использования, я пытаюсь сделать это через Math.random(). Я не понимаю, почему в моем коде печатаются только X, но не случайно, а не O. –
@NickCage Причина в том, что это только печать X, потому что код проверяет, если cellx> 0, а затем записывает X случайным образом, делает cellx--, а затем проверяет, нет ли в месте, где вы только что написали X, X и начинается снова до тех пор, пока cellx не станет меньше 1. После этого он просто зацикливается, не делая ничего. Вы должны отформатировать код немного лучше, он довольно нечитабелен в текущем состоянии. Я внесла некоторые изменения в свой ответ, пожалуйста, проверьте, работает ли мой код для вас. – Gelunox
Нет, он не в форме сетки и печатает 30 символов в массиве 5x5 2d. –