在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()));
应该返回 abcd
和 bcde
大约相同的次数。相反,它正在返回:
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/