【问题标题】:Generating random strings, missing one letter生成随机字符串,缺少一个字母
【发布时间】:2017-04-05 08:30:07
【问题描述】:

在尝试生成具有随机大小(3 到 20 之间)的随机字符串时,我遇到了一个小问题。我有一个数组arr,所有字符从a(小写)到Z(大写)。然后我为第二个数组arr2 生成一个随机长度arrLength,它将包含一些随机选择的字符。

我的问题是字母“a”(小写)从未出现在我随机生成的字符串中。我认为错误可能在for 循环内,但到目前为止我还没有看到它。也许它与(int) 转换或Math.floor 舍入有关?

    char[] arr = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
    int arrLength = (int) (Math.floor((Math.random() * ((17 - 3) + 1)) + 3));
    char[] arr2 = new char[arrLength];
    String str = "";

    for(int i=0;i<arrLength;i++) {
        char num = arr[(int) (Math.floor(Math.random() * (50) + 1))];
        arr2[i] = num;
    }

【问题讨论】:

  • 我怀疑这是你在 Math.floor 中的 +1

标签: java arrays random casting rounding


【解决方案1】:

使用arr.length(注意数组中有超过50个字符)代替魔术常量50并省略+1,因为它使您可以获得的最小数字为1并且数组索引从0 在 Java 中。

【讨论】:

  • 谢谢,成功了!问题是我从 Octave 翻译这段代码,数组索引从 1 开始,我完全忘记了。
猜你喜欢
  • 2011-08-18
  • 2010-09-08
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多