C#Case语句没有进入

时间:2014-05-31 12:57:24

标签: c# for-loop switch-statement mandelbrot

我目前正在通过Wrox C#书。但是,在显示Mandelbrot集的其中一个教程之后,我能够无错误地执行我的程序,但是在控制台中没有显示任何内容。我把它归结为我正在使用的开关的错误使用。有人能指出我正确的方向吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ch03Ex06
{
    class Program
    {
        static void Main(string[] args)
        {
            double realCoord, imagCoord;
            double realTemp, imagTemp, realTemp2, arg;
            int iterations;
            for (imagCoord = 1.2; imagCoord >= -1.2; imagCoord -= 0.05)
            {
                for (realCoord = -0.6; realCoord <= 1.77; realCoord += 0.03)
                {
                    iterations = 0;
                    realTemp = realCoord;
                    imagTemp = imagCoord;
                    arg = (realCoord * realCoord) + (imagCoord * imagCoord);
                    while ((arg < 4) && (iterations < 40));
                    {
                        realTemp2 = (realTemp * realTemp) - (imagTemp * imagTemp) - realCoord;
                        imagTemp = (2 * realTemp * realTemp) - imagCoord;
                        arg = (realTemp * realTemp) + (imagTemp * imagTemp);
                        iterations += 1;
                    }
                    switch (iterations % 4)
                    {
                        case 0:
                            Console.Write(".");
                            break;
                        case 1:
                            Console.Write("o");
                            break;
                        case 2:
                            Console.Write("O");
                            break;
                        case 3:
                            Console.Write("@");
                            break;
                    }
                }
                Console.Write("\n");
            }
            Console.ReadKey();
        }
    }
}

3 个答案:

答案 0 :(得分:10)

我想程序会永远运行,因为这行

         while ((arg < 4) && (iterations < 40));

;最后关闭这个while循环而不进入下一个块

答案 1 :(得分:1)

你有一个错字:

while ((arg < 4) && (iterations < 40));

必须删除

答案 2 :(得分:1)

这是你的问题,删除分号

while ((arg < 4) && (iterations < 40));