You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java单方法实现:生成10个单字符重复的随机长度名称

修正Java方法生成单重复字符的随机名称

原代码问题分析

你的代码目前存在几个关键问题,导致无法生成目标格式的字符串:

  • 每次循环都新建Random实例,会降低随机性且没必要
  • 用长度变量aLengthVariable去索引alpha字符串选字符,这会限制只能取alpha的第3到第9位字符(因为长度范围是3-10),不是随机选任意小写字母
  • 直接拼接字符和长度输出,没有生成重复字符的字符串

修正后的代码

import java.util.Random;

public class RandomNameGenerator {
    public static void task() {
        final String alpha = "abcdefghijklmnopqrstuvwxyz";
        final int max = 10;
        final int min = 3;
        // 只初始化一次Random实例,提升随机性和性能
        Random random = new Random();

        for (int n = 0; n < 10; n++) {
            // 随机选择一个小写字母
            char randomChar = alpha.charAt(random.nextInt(alpha.length()));
            // 随机生成3-10之间的长度(nextInt(max - min + 1)才能包含max值)
            int length = random.nextInt(max - min + 1) + min;
            // 生成由该字符重复length次的字符串
            String repeatedString = new String(new char[length]).replace('\0', randomChar);
            
            System.out.println("String " + (n + 1) + ": " + repeatedString);
        }
    }

    public static void main(String[] args) {
        task();
    }
}

关键改动说明

  • 将Random实例移到循环外,避免重复创建,保证随机性更稳定
  • 随机选字符时用alpha.length()作为nextInt的参数,确保能取到所有26个小写字母
  • 长度计算改为random.nextInt(max - min + 1) + min,这样能包含10这个最大值(原代码nextInt(max - min)只能生成0-6,加min后是3-9,取不到10)
  • 也可以用StringBuilder循环append实现重复字符,替代上述字符串生成方式:
    StringBuilder sb = new StringBuilder(length);
    for (int i = 0; i < length; i++) {
        sb.append(randomChar);
    }
    String repeatedString = sb.toString();
    

示例输出

String 1: ttttt
String 2: mmmmmmmm
String 3: aaa
String 4: ppppppp
String 5: llllllll
String 6: zzzzz
String 7: iiiiiiiii
String 8: bbbbbb
String 9: eeeeeeee
String 10: sssss

内容的提问来源于stack exchange,提问作者Coco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:31:01