VB.NET使用Do Until Loop实现奇数求和时运算逻辑异常排查
问题原因&修复方案
核心问题:求和循环的条件逻辑完全颠倒
Do Until的执行规则是一旦指定的条件成立,就立即终止循环。你原代码的求和循环写的是Do Until odd <= oddinput,初始值odd=1,只要输入的正奇数≥1,循环条件一开始就成立,累加逻辑一次都不会执行,最终sumOdd一直是0。
额外提示:你的输入校验逻辑实际也写反了
你原有的校验规则是直到输入为负数/偶数就停止询问,反而会把合法的正奇数判定为非法,一直要求用户重复输入,同时会把负数、偶数判定为合法输入,不符合需求。
修复后完整代码
Sub Main() ' 显式初始化变量,避免隐式默认值导致的异常 Dim sumOdd As Integer = 0 Dim oddinput As Integer Dim odd As Integer = 1 Console.Write("Please Enter a Positive Odd Number!: ") oddinput = CInt(Console.ReadLine()) ' 修复校验逻辑:直到输入是正奇数才停止循环 Do Until oddinput > 0 AndAlso oddinput Mod 2 = 1 Console.Write("Please Enter a Positive Odd Number!: ") oddinput = CInt(Console.ReadLine()) Loop ' 修复求和循环逻辑:直到odd超过输入值才停止累加 Do Until odd > oddinput sumOdd += odd odd += 2 Loop Console.WriteLine("The Sum of all the odd numbers up to {0} is {1}!", oddinput, sumOdd) Console.ReadLine() End Sub
仅修复求和部分的最小改动方案
如果你确定要保留原有校验逻辑,只需要把求和的Do Until条件改成Do Until odd > oddinput即可,不需要改动其他部分。
内容的提问来源于stack exchange,提问作者user17011328
相关产品推荐
相关产品推荐

