как рандомизировать значение символа? - PullRequest
0 голосов
/ 17 сентября 2018

Итак, моя проблема в том, что у меня есть двумерный массив символов.Я хочу перебрать каждый элемент и случайным образом назначить им значение.Пока это мой код:

private char [][] generateTable(int rows, int columns){
        char [][] table = new char [rows][columns];
        return table;
    }

private void tableFiller(char [][] table){
        for (char[] row : table) {
            for (char character : row) {
                randomize(column);
            }
        }
    }

ublic static void randomize(char character){
        Random random = new Random();

        if (random.nextInt(100) < 50){
            character = '.';
        } else {
            character = '*';
        }
    }

Теперь метод рандомизатора не работает и не может понять, почему.ИДЕЯ подсказывает мне, что значение, присвоенное символу, никогда не используется, но это не помогает.Как я могу заставить этот метод работать?

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Потому что char не является ссылкой. Чтобы это сработало, вы должны изменить метод рандомизации:

public static char randomize(){
    Random random = new Random();
    char character;
    if (random.nextInt(100) < 50){
        character = '.';
    } else {
        character = '*';
    }
    return character;
}

И назовите это следующим образом:

character = randomize();
0 голосов
/ 17 сентября 2018

Вам необходимо установить символьный объект со значением символ = рандомизировать (столбец);

private void tableFiller(char [][] table){
    for (char[] row : table) {
        for (char character : row) {
           character = randomize(column);
        }
    }
}

Или

рандомизировать (символ);

private void tableFiller(char [][] table){
    for (char[] row : table) {
        for (char character : row) {
           randomize(character);
        }
    }
}

Также вы можете сделать https://stackoverflow.com/a/52370847/9603408

0 голосов
/ 17 сентября 2018

Вот проблема: void randomize

Ваш метод randomize возвращает void, но он должен возвращать символ.

Затем этот символ должен использоваться в том месте, где была функциявызвал, присвоив его соответствующему индексу массива.Я предлагаю вам цикл на основе индекса массива, чтобы упростить присваивание.

Например, вместо: for (char character : row) вместо этого вы должны написать: for (int i=0; i<row.length; i++)

...