HackerRank提交C#代码时出现stdout无响应错误求助
解决HackerRank C#提交「~ no response on stdout ~」问题
你的代码存在三个关键问题,导致输出不符合测试用例要求,进而触发stdout无响应提示:
- 外层循环遗漏最后一个输入元素:
i < input.Count - 1会跳过索引为input.Count-1的最后一个元素,HackerRank测试用例要求处理所有输入,这会直接导致输出缺失。 - 内层循环遗漏字符串最后一个字符:
j < data.Length - 1会跳过每个字符串的最后一个字符(索引data.Length-1),造成输出内容不完整。 - 奇偶判断逻辑错误:你判断的是外层循环的索引
i的奇偶性,但这类题目的要求通常是每个字符串内部字符的索引奇偶,即对单个字符串里的j(字符索引)做奇偶判断,而非外层的输入项索引i。
修正后的代码:
foreach (string data in input) { string evenData = "", oddData = ""; for (int j = 0; j < data.Length; j++) { if (j % 2 == 0) { evenData += data[j]; } else { oddData += data[j]; } } Console.WriteLine($"{evenData} {oddData}"); }
修改说明:
- 用
foreach遍历所有输入元素,避免手动索引导致的遗漏问题;如果坚持用for循环,需改为i < input.Count。 - 内层循环条件改为
j < data.Length,确保每个字符都被处理。 - 将奇偶判断的对象从
i改为j,符合题目对单个字符串字符拆分的要求。 - 用字符串插值
$"{evenData} {oddData}"替代字符串拼接,代码更简洁高效。
如果测试用例仍有问题,可检查:
- 是否正确读取了输入(比如HackerRank中是否用
Console.ReadLine()正确获取所有输入并存入input集合) - 确保没有额外的条件分支导致
Console.WriteLine被跳过
内容的提问来源于stack exchange,提问作者Mirxa Xayn
相关产品推荐
相关产品推荐

