使用goto语句

时间:2017-07-08 16:48:41

标签: c#

static void Main(string[] args)
{
    double i, j;
    Console.WriteLine("Enter fnum");
    i = Convert.ToDouble(Console.ReadLine());
    start:
    Console.WriteLine("Enter snum");
    j = Convert.ToDouble(Console.ReadLine());

    if(j==0)
    {
        goto start;
    }

    Console.ReadLine();
    Console.WriteLine("Div result is {0}/{1}={2}", i, j, i / j);
}

我尝试在c#中使用GOTO实现除零。我得到了结果,但在这里我想首先计算fnum / snum并打印结果,然后如果我输入snum零,它应该让我输入snum而不是零。然后goto start标签应该开始工作。但在这种情况下,我只能默认执行fnum / snum。

Console.WriteLine("Enter fnum");
i = Convert.ToDouble(Console.ReadLine());
start:
Console.WriteLine("Enter snum");
j = Convert.ToDouble(Console.ReadLine());

如果我输入snum zero,我应该开始标记并问我"输入第二个数字其他零"

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

if(j==0)
{
    Console.WriteLine("snum cannot be 0!!");
    goto start;
}

不建议使用goto语句或养成使用它们的习惯。

它们往往会增加复杂性并创建意大利面条代码,随着您添加越来越多的代码,它们也会影响可读性。由goto语句引起的错误可能很难解决。如果他们愿意,其他人可以编辑更多不使用goto陈述的理由。

答案 1 :(得分:2)

你绝对应该使用goto。请改用简单的while loop

static void Main(string[] args)
{
    double i, j = 0;
    Console.Write("Enter fnum: ");
    double.TryParse(Console.ReadLine(), out i);

    Console.Write("Enter snum: ");
    while (j == 0)
    {
        double.TryParse(Console.ReadLine(), out j);

        if(j==0)
            Console.WriteLine("Enter a number that is not 0");
    }


    Console.ReadLine();
    Console.WriteLine("Div result is {0}/{1}={2}", i, j, i / j);
}

此外,我已修改您的代码以使用Double.TryParse而非Convert.ToDouble(),这是通常建议的。有了它,您可以执行检查以确保用户实际输入了一个数字。我还将Console.WriteLine更改为Console.Write以获取输入,这根本不会影响程序的流程,但对我而言,它会更美观。