【问题标题】:how to randomize the value of a char?如何随机化char的值?
【发布时间】:2018-09-17 15:06:54
【问题描述】:

所以,我的问题是,我有一个二维字符数组。我想遍历每个元素,并为它们随机分配一个值。到目前为止,这是我的代码:

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 = '*';
        }
    }

现在,随机化器方法不起作用,无法弄清楚原因。 IDEA 建议我从未使用分配给字符的值,但这无济于事。我怎样才能使这种方法起作用?

【问题讨论】:

  • 您没有返回randomize 中的值。目前是void

标签: java char


【解决方案1】:

这里有问题:void randomize

您的 randomize 方法返回 void,但它应该返回一个字符。

然后,应该在调用函数的地方使用该字符,方法是将其分配给相关的数组索引。我建议您基于数组索引进行循环以使分配更容易。

例如,您可以写成:for (int i=0; i&lt;row.length; i++),而不是:for (char character : row)

【讨论】:

    【解决方案2】:

    因为char 不是参考。为了让它工作,你应该改变你的随机化方法:

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

    然后这样称呼它:

    character = randomize();
    

    【讨论】:

    • 它是引用类型还是原始类型无关紧要。 randomize 内的重新分配不会在它之外产生任何影响。此外,分配给character 不会修改row 中的任何内容。
    【解决方案3】:

    你需要给字符对象设置一个值character = randomize(column);

    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

    【讨论】:

      猜你喜欢
      • 2018-11-17
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多