2017-08-04 8 views
0

Ich weiß nicht, warum mein Programm schließen, bevor ich Zahlen schreibe (in Rechenoption). Und was ist falsch mit Etiketten. Jemand Hilfe? Das tut mir leid. Es muss leicht für dich sein.Mein Programm schließen, bevor ich Zahlen schreibe (Rechenoption)

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

// sollte ich eine console.readkey() machen?

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

      } 

Wenn ich Etiketten trennen, kann ich nicht kompilieren.

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

Dieses Etikett Arbeit korrekt
label3: Console.WriteLine ("exit \ n"); if (str == "exit") { Pause; }

 } 
    } 
} 

}

Antwort

0

Nachfolgend liest Parameter aus der Befehlszeile Argumente des Programms (das args-Array in dem Verfahren main geben.

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

Was Sie wahrscheinlich hier sind, wollen readline Anrufe wie Sie oben verwendet haben

EDIT: Wie für das Kompilierungsproblem.Posten Sie bitte ein richtig formatiert voll Beispiel für den Code, der nicht kompiliert und den Compiler-Fehler auch post, da es wahrscheinlich sagen wird, was mit Ihrem Code falsch ist.

+0

ok, danke mann. Ich versuche mehr ... – SebiX

Verwandte Themen