我正在编写这个算法,它将名称中的字母替换为随机位置的随机字母。它做了我需要它做的事情,但经过几次迭代该算法后,它开始用 1 个字母替换每个字母。
例如: 格雷格
雷尔
泰特
已添加
耶耶
杰杰杰
菲夫
呵呵
雷尔
罗罗
RRWR
罗尔
瓦瓦瓦瓦
奥沃
bbwb
yywy
毫米波
嗯嗯
LLW
毫米波
嗯嗯
吉格
伊伊
伊伊
菲夫
吉吉吉
吉吉维吉
比比
吉格
格格布格
库克
嘎嘎
CCAC
哈哈
CCMC
扎兹
拉尔
厄阿
哇哇
万维网
DDPD
FFPF
yypy
伊皮伊
FFSF
RRSR
SSSS
三三
布布
三三
滴滴
xxxx
SSSS
伊尔
呜呜呜
ssss
我不明白为什么它在正常运行后开始这样做。非常感谢任何建议!
private static String replaceName() {
final String alphabet = "abcdefghijklmnopqrstuvwxyz";
final int alphaNum = alphabet.length();
String newName = null;
Random r = new Random();
for (int i = 0; i < (r.nextInt(name.length()) + 1); i++) {
int replaceCharAt = r.nextInt(name.length());
newName = name.replace(name.charAt(replaceCharAt), alphabet.charAt(r.nextInt(alphaNum)));
//System.out.println(newName);
}
return newName;
}
最佳答案
您的代码不会交换位置,它将出现的一个字符替换为另一个字符。
使用 char 数组会更好
char[] stringChars = yourString.toCharArray();
用索引替换 then 并返回一个字符串
String result = new String(stringChars);
关于java - 行为奇怪的随机字符生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46456680/