C#实现1到n数字转字符串:3/5倍数替换为指定值代码排错
问题定位与修复方案
原有代码存在的问题
- 数组操作逻辑完全错误:初始化为空数组后,每次循环都直接创建新的长度为1的数组覆盖原有数组,没有将每一轮的元素追加到结果数组中,最终返回的数组仅包含最后一个元素的处理结果
- 判断顺序错误:没有优先判断同时为3和5倍数的情况,即使满足双倍数条件,也会被前面单独判断3或5倍数的逻辑覆盖结果
- 字符串拼写错误:需求要求的
Darude被写为Deude,Sandstorm被写为Sandstome,双倍数的匹配字符串也存在拼写错误 - 逻辑运算符使用不规范:判断双倍数条件时使用了按位与
&,应该使用逻辑与&& - 分支逻辑错误:
else仅和最后一个判断双倍数的if绑定,即使满足了3或5的倍数条件,仍会执行else的控制台输出逻辑,且输出内容没有存入结果数组 - 存在无效代码:循环内有多余的
`enter code here`无效标记
修正后的实现代码
static string[] StringArray(int n) { // 初始化指定长度的结果数组 string[] results = new string[n]; for (int i = 1; i <= n; i++) { // 优先判断同时为3和5倍数的情况 if (i % 3 == 0 && i % 5 == 0) { results[i - 1] = "Darude StandStorm"; } else if (i % 3 == 0) { results[i - 1] = "Darude"; } else if (i % 5 == 0) { results[i - 1] = "Sandstorm"; } else { results[i - 1] = i.ToString(); } } return results; }
内容的提问来源于stack exchange,提问作者Ncoder
相关产品推荐
相关产品推荐

