为什么C#中string类型name变量未存储输入值?如何实现大小写混合姓名输出
问题根因
- 字符数组
ch、结果数组name2的初始化时机错误:你在读取用户输入的姓名前就完成了两个数组的初始化,数组内容和长度始终沿用初始默认值"chez",后续用户输入的新姓名完全没有进入处理逻辑,这就是你觉得name变量没有成功存储值的核心原因。 - 字符替换逻辑冗余:原代码中对
letter做全局替换的写法没有必要,直接将匹配到的单个字符转大写即可。 - 默认是精确大小写匹配:如果需要实现无论输入的目标字母是大写还是小写都能匹配替换,可调整判断条件做大小写不敏感校验。
修复后可运行代码
string name = ""; string letter = ""; Console.WriteLine("Insert your name"); name = Console.ReadLine(); // 读取到用户输入的姓名后再初始化相关数组 char[] ch = name.ToCharArray(); string[] name2 = new string[name.Length]; Console.WriteLine("Insert of letter"); letter = Console.ReadLine(); // 若需要忽略大小写匹配,可取消下一行注释 // letter = letter.ToLower(); for (int i = 0; i < ch.Length; i++) { name2[i] = ch[i].ToString(); // 忽略大小写的判断写法:if (name2[i].ToLower() == letter) if (name2[i] == letter) { name2[i] = name2[i].ToUpper(); } } // 输出最终处理后的姓名 for (int i = 0; i < name2.Length; i++) { Console.Write(name2[i]); } Console.WriteLine();
效果示例
输入姓名为john,输入要转为大写的字母为h,运行后输出结果为JoHn,符合需求。
内容的提问来源于stack exchange,提问作者Chris Van Gewden
相关产品推荐
相关产品推荐

