You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:27:02