带有if语句的C#中的错误

时间:2013-06-01 03:58:01

标签: c#

我正在尝试使用C#片段中的用户输入实现欧几里德算法,作为我学习该语言过程的一部分。 MVS告诉我if和elif语句以及这些语句的结束括号都有错误。现在,来自pythonic背景这对我来说似乎很自然,所以请帮助我找出可能的错误。非常感谢帮助。

代码:

namespace EuclideanAlgorithm
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter two numbers to calculate their GCD"); 

            int input1 = Convert.ToInt32(Console.ReadLine());
            int input2 = Convert.ToInt32(Console.ReadLine());
            int remainder;
            int a;
            int b;

            if (input1 == input2);
            {
                Console.Write("The GCD of", input1, "and", input2, "is", input1);
                Console.ReadLine();
            }
            else if (input1 > input2);
            {
                a = input1;
                b = input2;

                while (remainder != 0);
                {
                    remainder = a % b;
                    a = b;
                    b = remainder;
                }
                Console.Write("The GCD of", input1, "and", input2, "is", b);
                Console.ReadLine();
            }
            else if (input1 < input2);
            {
                a = input2;
                b = input1;

                while (remainder != 0);
                {
                    remainder = a % b;
                    a = b;
                    b = remainder;
                }

                Console.WriteLine("The GCD of", input1, "and", input2, "is", b);
                Console.ReadLine();
            }
        }
    }
}

3 个答案:

答案 0 :(得分:7)

你需要删除if上的分号。 所以:

if (input1 == input2);

变为:

if (input1 == input2)

这也适用于else ifwhile。 也只是旁注:

Console.Write("The GCD of", input1, "and", input2, "is", input1);

这将产生:

  

的GCD

如果你想做string.Format,你需要这样做:

Console.Write("The GCD of {0} and {1} is {2}", input1, input2, input1);

Here是关于string.Format

的更多信息

还有一件事 - 确保在设置它时初始化剩余部分,否则你将无法编译在访问之前,可能无法初始化局部变量余数:

int remainder = 0;

我希望这会有所帮助。

修改

如果你希望你的余数在第一次评估时不是0,你可以使用do / while循环:

do
{
    remainder = a % b;
    a = b;
    b = remainder;

} while (remainder != 0);

答案 1 :(得分:0)

你在那些if语句

上有半冒号

if (input1 == input2);

else if (input1 < input2);

当有半冒号时,它不会进入括号,将它们更改为

if (input1 == input2)

else if (input1 < input2)

由于您已经拥有{,我们无需再次添加它们,

现在它应该工作

同样适合您在顶部的while循环,我刚刚看到

答案 2 :(得分:0)

以下行错误:

if (input1 == input2);
[...]
else if (input1 > input2);
[...]
while (remainder != 0);
[...]
else if (input1 < input2);
[...]
while (remainder != 0);

每个末尾的分号(;)结束语句,使得大括号({)不正确。

以分号结束结束ifwhilefor语句。