0

我正在尝试使用 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();
            }
        }
    }
}
4

3 回答 3

7

好吧,您需要删除ifs 上的分号。所以:

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);

这里有更多信息string.Format

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

int remainder = 0;

我希望这有帮助。

编辑

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

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

} while (remainder != 0);
于 2013-06-01T03:59:13.473 回答
0

你在那些 if 语句上有分号

if (input1 == input2);

else if (input1 < input2);

当那里有分号时,它不进入括号,将它们更改为

if (input1 == input2)

else if (input1 < input2)

既然你已经有你了{,我们不需要再次添加它们,

现在它应该可以工作了

我刚刚看到的顶部的 while 循环也是如此

于 2013-06-01T04:05:20.190 回答
0

以下几行是错误的:

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

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

不要以分号结束ifwhilefor语句。

于 2013-06-01T04:51:26.263 回答