C#实现两整数范围求和:代码运行结果不符合预期的修正咨询
代码问题定位与修正
你当前代码存在两处核心逻辑错误,直接导致输出结果和预期偏差:
- 循环遍历范围完全错误。现有循环逻辑为
i从0开始,遍历到startNumber就停止,也就是当你输入startNumber=12时,实际累加的是0到12的整数和,计算得0+1+2+…+12=78,和你观察到的错误输出完全吻合,完全没有遍历从startNumber到endNumber的目标区间。 - 缺失你最初要求的正反序输入适配逻辑。代码没有对startNumber和endNumber的大小做判断,一旦输入的起始值大于结束值,循环的终止条件将永远不满足,最终累加结果会一直为0。
修正后可正常运行的代码
调整两处核心逻辑:输入完成后先判断两值大小,若起始值大于结束值则交换;将循环的起点从0改为startNumber,终止条件调整为遍历到endNumber;原代码循环内部的逐值打印属于调试语句,按需保留即可:
private void SumNumbers() { int startNumber, endNumber; Console.WriteLine("\nplease enter a start number: "); startNumber = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("\nplease enter an end number: "); endNumber = Convert.ToInt32(Console.ReadLine()); // 自动交换大小值,适配任意输入顺序 if (startNumber > endNumber) { int temp = startNumber; startNumber = endNumber; endNumber = temp; } int result = 0; // 从起始值遍历到结束值完成累加 for (int i = startNumber; i <= endNumber; i++) { result += i; // 调试语句:逐行打印当前遍历的整数值,不需要可删除 // Console.WriteLine(i); } Console.WriteLine($"The sum of Numbers between {startNumber} and {endNumber} is: {result}"); Console.ReadLine(); }
修正后验证:当你输入起始数12、结束数23时,实际累加区间为12到23,根据等差数列求和公式计算结果为(12+23)*12/2=210,和预期结果一致;哪怕你输入的起始值大于结束值,代码也会自动交换两个值完成正确计算。
内容的提问来源于stack exchange,提问作者Kevin Sted
相关产品推荐
相关产品推荐

