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

实现连续输入数字终止逻辑的C#程序代码问题求助

代码逻辑问题分析与修正

你的代码目前存在两个核心问题,没法满足“持续接收输入,仅当最后输入的数字是前一个的两倍时停止”的需求:

1. 循环终止逻辑完全搞反

原代码的while条件n2 != (n1 * 2) || n1 == (n2 * 2)完全偏离了需求:

  • 你需要的是当新输入的数字是前一个的两倍时停止循环,但这个条件会让循环在“新数字不是前一个的两倍”或者“前一个是新数字的两倍”时继续运行。举个例子:如果输入3和6(符合终止条件),循环会直接退出,但如果输入6和3(前一个是新数字的两倍),循环也会继续,这显然不符合你的要求。

2. 无法连续跟踪输入序列

原代码每次循环都输入两个全新的数字,没办法保留上一次输入的最后一个数作为下一次的“前一个数字”。比如你需要处理1→3→6→12的序列,原代码会把1和3作为一组,然后6和12作为另一组,中间3和6的关系完全没被检查到,这显然不符合“持续接收输入”的核心要求。


修正后的代码

下面是完全符合需求的实现,我会逐行解释逻辑:

using System;

namespace ProgExer19
{
    class Program
    {
        public static void Main(string[] args)
        {
            // 先接收第一个输入的数字,作为序列的初始"前一个数字"
            Console.Write("ENTER NUMBER: ");
            int previousNumber = int.Parse(Console.ReadLine());

            // 无限循环持续接收后续输入
            while (true)
            {
                Console.Write("ENTER NUMBER: ");
                int currentNumber = int.Parse(Console.ReadLine());

                // 检查当前数字是否是前一个的两倍,符合条件就终止循环
                if (currentNumber == previousNumber * 2)
                {
                    break;
                }

                // 如果不符合终止条件,把当前数字更新为下一次循环的"前一个数字"
                previousNumber = currentNumber;
            }

            Console.WriteLine("Program will now terminate.");
            System.Threading.Thread.Sleep(1000);
        }
    }
}

修正逻辑说明:

  1. 初始输入处理:先获取第一个数字作为序列起点,赋值给previousNumber。
  2. 持续接收输入:用while(true)创建无限循环,不断获取用户输入的新数字currentNumber。
  3. 终止条件判断:每次输入后直接检查currentNumber是否等于previousNumber * 2,符合条件就用break退出循环。
  4. 更新前序数字:如果不符合终止条件,就把currentNumber赋值给previousNumber,确保下一次输入能和最新的前一个数字对比。

这样就能完美处理你提到的测试场景:

  • 输入1→3→6:每次检查都不符合两倍条件,程序持续运行;
  • 输入1→3→6→12:当输入12时,发现12 = 6 * 2,程序立即终止。

额外提个实用小建议:实际开发中最好用int.TryParse代替int.Parse,避免用户输入非数字时程序崩溃,示例代码如下:

if (!int.TryParse(Console.ReadLine(), out int currentNumber))
{
    Console.WriteLine("请输入有效的数字!");
    continue;
}

内容的提问来源于stack exchange,提问作者Jason Ereso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:56:01