java - 将字符串变量拆分为指定长度的随机子字符串

标签 java string random

在Java中。 它应该使用随机数生成器返回随机选择的具有指定长度的文本子串。如果长度为负数或大于文本长度,则该方法应抛出 IllegalArgumentException。例如,chooseSubstring("abcde", 4, new Random()) 应该在大约一半的时间返回“abcd”,在大约一半的时间返回“bcde”。

public static String chooseSubstring (String text, int length, Random rand)
{
    int randomNum = rand.nextInt(length);
    String answer = text.substring(randomNum);
    return answer;
}

基本上,我想从变量 text 返回一个子字符串。子字符串必须是可变长度的长度。此子字符串的开头应从随机数生成器确定的随机位置开始。我的问题是随机数生成器无法确保子字符串的长度正确。

        System.out.println(chooseSubstring("abcde", 4, new Random()));

应该返回 abcdbcde 大约相同的次数。相反,它正在返回: bcde 编码器 abcde。 任何有关如何解决此问题的信息都会有很大帮助,谢谢!

最佳答案

您的代码在 0 和 length 之间的随机索引处获取一个子字符串,不包括在内。您必须指定结束索引,这样它就不会延伸到字符串的末尾。您还需要减少起始索引的范围,以便结束索引不会超过字符串:

int randomNum = rand.nextInt(text.length() - length + 1);
String answer = text.substring(randomNum, randomNum + length);

关于java - 将字符串变量拆分为指定长度的随机子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46416417/

相关文章:

java - 按具有重叠路径表达式的 JPA 条件查询过滤

java - 尝试启动新 Activity 时出现空指针异常

php - mysql + php : Selecting multiple random results

python - 在 NumPy 数组中随机增长值

algorithm - 如何在没有静态计数器的情况下模拟随机选择第 n 个访问者

java - 将大部分对象保存在缓存/内存中而不是数据库中?

java - 将 XML 文件从 URL 解析为数组

python - 如何从 Python 中删除包含字符串的字符?

java - 使用 Java split() 方法将 XML 字符串拆分为多个 XML 文档

java - 将字符串转换为泛型