首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用goto语句

使用goto语句
EN

Stack Overflow用户
提问于 2017-07-08 16:48:40
回答 2查看 121关注 0票数 0
代码语言:javascript
复制
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 0,它应该要求我输入snum而不是zero.Then,goto启动标签应该开始工作。但是在这里,在这种情况下,我只能默认地执行fnum/snum。

代码语言:javascript
复制
Console.WriteLine("Enter fnum");
i = Convert.ToDouble(Console.ReadLine());
start:
Console.WriteLine("Enter snum");
j = Convert.ToDouble(Console.ReadLine());

在这里,如果我输入snum 0,它应该让我开始标签,并问我“输入第二个号码其他零”。

有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-08 16:53:04

代码语言:javascript
复制
if(j==0)
{
    Console.WriteLine("snum cannot be 0!!");
    goto start;
}

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

它们往往会增加复杂性和创建意大利面代码,它们也会影响可读性,因为您添加了越来越多的意大利面代码。由goto语句引起的错误可能很难修复。等等,其他人可以编辑更多的理由不使用goto语句,如果他们愿意。

票数 2
EN

Stack Overflow用户

发布于 2017-07-08 17:03:51

您绝对应该使用,而不是使用goto。使用简单的 loop代替:

代码语言:javascript
复制
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,这根本不影响程序的流程,但对我来说,它在美观上更好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44988545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档