【问题标题】:My program close, before i write numbers (calculating option)我的程序关闭,在我写数字之前(计算选项)
【发布时间】:2017-08-04 11:33:44
【问题描述】:

我不知道为什么我的程序在我写数字之前关闭(在计算选项中)。标签有什么问题。有人帮忙吗?非常遗憾。这对你来说一定很容易。

class Program
{
    static void Main(string[] args)
    {
        string str;
        double parametrA, parametrB, parametrC;
        Console.Write("Chose a option: \n");
        Console.Write("calculating - calculating square equation \n");
        Console.Write("series - even or odd \n");
        Console.Write("exit - close program \n");
        Console.ReadKey();
        while (true)
        {
            str = Console.ReadLine();
            if (str == "calculating")
            {
                goto label1;                     
            }
            else
            {
                if (str == "series")
                {
                    goto label2;
                }
                else
                {
                    if (str == "exit")
                    {
                        goto label3;
                    }
                }
            }

        label1:
            Console.WriteLine("calculating: \n");
            Console.WriteLine("enter parameters: \n");



            if (args.Length < 3)
            {
                Console.WriteLine("not enaught data \n");
                return;
            }
            try
            {
                parametrA = Double.Parse(args[0]);

                parametrB = Double.Parse(args[1]);

                parametrC = Double.Parse(args[2]);

//我应该创建一个console.readkey()?

            }
            catch (Exception)
            {
                Console.WriteLine("One of the parameters isnt a correct number! ");
                return;
            }
            Console.WriteLine("Introduced equation parameters: \n");
            Console.Write("Parametr A = " + parametrA + "Parametr B = " + parametrB + "Parametr C = " + parametrC + "\n");
            if (parametrA == 0)
            {
                Console.WriteLine("It isn't a square equation! ");
            }
            else
            {
                double delta = parametrB * parametrB - 4 * parametrA * parametrC;
                double score;
                if (delta < 0)
                {
                    Console.WriteLine("Delta < 0! ");
                }
                else if (delta == 0)   
                {
                    score = -parametrB / (2 * parametrA);
                    Console.WriteLine("x = " + score);
                }
                else
                { 
                score = (-parametrB + Math.Sqrt(delta)) / (2 * parametrA);
                Console.WriteLine("x1 = " + score);
                score = (-parametrB - Math.Sqrt(delta)) / (2 * parametrA);
                Console.WriteLine("x2 = " + score);
                }

            }

如果我分开标签,我无法编译。

           label2:
                Console.WriteLine("odd numbers : \n");
                for (int i = 1; i <= 10; i++)
                {
                    if (i % 2 != 0)
                        Console.WriteLine(i);
                    else
                        Console.WriteLine("even!");
                }

这个标签工作正常
标签3: Console.WriteLine("退出\n"); 如果(str ==“退出”) { 休息; }

        }
     }
}

}

【问题讨论】:

    标签: console.readkey


    【解决方案1】:

    下面从程序的命令行参数中读取参数(传入main方法的args数组。

    parametrA = Double.Parse(args[0]);
    parametrB = Double.Parse(args[1]);
    parametrC = Double.Parse(args[2]);
    

    您可能想要的是上面使用的 readLine 调用。

    编辑:至于编译问题。请发布格式正确的完整代码示例,该示例无法编译,并发布编译器错误,因为它很可能会说明您的代码有什么问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      相关资源
      最近更新 更多