2017-08-04 24 views
0

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

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

//我shuld做一个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!"); 
       } 

这个标签工作正确
LABEL3: Console.WriteLine( “退出\ n”);如果(str ==“退出”) { break; }

 } 
    } 
} 

}

回答

0

下读取程序的命令行参数的参数(args数组到main方法传递。

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

你可能想在这里是什么的readLine电话就像你以前用过的一样。

编辑:至于编译问题。请发布一个格式正确的完整没有编译的代码示例,也会发布编译器错误,因为它很可能会说代码出了什么问题。

+0

好的,谢谢你。我尝试更多... – SebiX