java - 行为奇怪的随机字符生成器

标签 java

我正在编写这个算法,它将名称中的字母替换为随机位置的随机字母。它做了我需要它做的事情,但经过几次迭代该算法后,它开始用 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/

相关文章:

java - 如何将用户输入数据与我的 firestore 记录进行比较

java - 即使类的字段尚未初始化,Java 是否也会为类的字段分配内存?

java - Java 方法可以返回 Enum 类型吗?

java - 压缩异常 : Zip file is empty - Wildfly

java - JMenuItem仅由键盘输入触发,而不是点击

java - 升级到 commons-collections4 抛出 NoClassDefFoundError

java - "cancel query"在 SQL Developer 中如何工作

java - Apache Tomcat 安全

java - 如何获取 float 中的3个字符?

java - 客户端加密