如何修复while循环停止+未处理的异常错误

时间:2019-01-08 01:39:13

标签: c#

循环运行一次if语句并停止。

我是C#的新手,如果我忽略了看似明显的内容,请原谅。我目前正在编写一个通过控制台条目可视化Collat​​z猜想的程序。该程序首先提示用户输入自然数。该程序应该通过猜想的公式运行该数字,直到最终达到数值1。但是,当我在控制台中键入该数字时,程序将通过一个公式运行它并崩溃。似乎Double.Parse行有问题。我已经尝试使用convert方法,并尝试将“ num”定义为十进制而不是双精度。

    {
        Console.WriteLine("Enter a natural number:");

        Double num = Convert.ToDouble(Console.ReadLine());

        while (num != 1)
        {
            {
                if (num % 2 == 0)
                {
                    Console.WriteLine(num / 2);
                    num = Double.Parse(Console.ReadLine());
                }
                else
                {
                    Console.WriteLine(num * 3 + 1);
                    num = Double.Parse(Console.ReadLine());
                }
            }


            Console.ReadLine();
        }
    }
}
}

1 个答案:

答案 0 :(得分:3)

说实话,我不能肯定您要从描述中实现的目标(即,我不知道什么是Collat​​z猜想可视化公式),但我想我知道您的问题是什么。< / p>

我认为您对Console.ReadLine()有点困惑。此方法暂停并等待用户输入。结果,在您第一次通过while语句循环时,您的程序将暂停并等待用户输入。我认为您要尝试的是在“ if”或“ else”部分中采用公式的结果,并将其捕获为“ num”的新值。

这是我对您要实现的目标的最佳猜测:

static void Main(string[] args)
    {
        Console.WriteLine("Enter a natural number:");

        Double num = Convert.ToDouble(Console.ReadLine());

        while (num != 1)
        {
            if (num % 2 == 0)
            {
                num /= 2;
                Console.WriteLine(num);
            }
            else
            {
                num = num * 3 + 1;
                Console.WriteLine(num);
            }
        }

        Console.WriteLine(num);

        Console.ReadLine();
    }

此外,看起来您的while语句中可能还有一组括号。似乎并不能按原样编译,所以也许这只是将其复制到问题中的方式。