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

C#中如何从两个字符串各取2字符生成10组4字符组合?

问题:从两个字符串生成10组4字符组合(每组2+2字符)遇到瓶颈

我来帮你捋清楚当前代码的问题,以及怎么调整才能生成你想要的10组组合~

首先看你遇到的情况:只能生成4组就停止,核心问题出在这两个地方:

1. 索引越界导致程序提前终止

你的内层循环里,ctr每次递增2,然后直接用nchars[ctr]和nchars[ctr2](ctr2=ctr+1)取字符。拿你的示例输入FIRSTNAME来说,它的长度是9(索引范围0-8),当ctr=8时,ctr2=9,这时候访问nchars[9]就会触发索引越界异常,程序直接停掉,所以只能生成ctr=0、2、4、6对应的4组。

2. 循环逻辑完全错误,没法生成新组合

外层的for(i=0;i<=10;i++)完全是多余的——它只会重复执行内层循环11次,让你得到重复的组合,而不是新的组合。而且你当前的逻辑只能从两个字符串的连续位置取2字符,一旦到字符串末尾就没的取了,自然凑不够10组。


解决方案:循环复用字符串字符,确保生成10组

要凑够10组,我们可以用取模运算来循环复用两个字符串的字符,这样就算字符串长度不够,也能循环从头取,直到凑够10组。修改后的代码如下:

using System;
public class Program {
    public static void Main() {
        Console.WriteLine("Name");
        string name = Console.ReadLine();
        Console.WriteLine("Lastname");
        string lastname = Console.ReadLine();

        // 先校验输入,避免字符串太短导致后续出错
        if (name.Length < 2 || lastname.Length < 2)
        {
            Console.WriteLine("名字和姓氏必须至少包含2个字符哦!");
            return;
        }

        // 直接循环10次,生成10组组合
        for (int i = 0; i < 10; i++)
        {
            // 用取模运算计算name中两个字符的索引,实现循环复用
            int nameIdx1 = (i * 2) % name.Length;
            int nameIdx2 = (nameIdx1 + 1) % name.Length;
            // 同理计算lastname的字符索引
            int lastIdx1 = (i * 2) % lastname.Length;
            int lastIdx2 = (lastIdx1 + 1) % lastname.Length;

            // 拼接成4字符组合并输出,加上组号
            string combo = $"{name[nameIdx1]}{name[nameIdx2]}{lastname[lastIdx1]}{lastname[lastIdx2]}";
            Console.WriteLine($"{i+1}{combo}");
        }
    }
}

代码说明:

  • 用(i * 2) % 字符串长度计算偏移量:当偏移超过字符串长度时,取模会让它自动回到开头,实现循环复用字符
  • 第二个字符的索引是第一个索引+1后再取模:比如字符串长度为9,当第一个索引是8(最后一位),+1后是9,9%9=0,就会取开头的第一个字符,不会越界
  • 增加了输入校验:防止用户输入过短的字符串导致错误
  • 直接循环10次,每次生成一组新组合,刚好得到你要的10组

用你的示例输入FIRSTNAME和LASTNAME运行,会得到这样的结果:
1FILA
2RSST
3TNNA
4AMME
5EFLA
6IRSN
7STNA
8TNME
9AMEF
10EFST

完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:02:12