2017-06-29 1 views
-1

Ich versuche, Spiele zu entwickeln und für die Grundlagen muss ich Code C# in Visual Studio 2015. Es ist aC# Datei und der Code ist lernen, wie folgt-; erwartet {erwartet in Visual Studio 2015 in einem CS-Dateiprogramm. Es ist eine mathematische Formel

Es ist im Grunde ein Code basiert beim Finden der Entfernung zwischen 2 Punkten.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Program_yash 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("Welcome to my program! Here, we're going to find the distance between 2 points in a cartesian coordinate system and the angle between them"); 
      Console.WriteLine("Please enter the x value of the 1st coordinate."); 
      float pointX1 = float.Parse(Console.ReadLine()); 
      Console.WriteLine("Please enter the y value of the 1st coordinate."); 
      float pointY1 = float.Parse(Console.ReadLine()); 
      Console.WriteLine("Please enter the x value of the 2nd coordinate."); 
      float pointX2 = float.Parse(Console.ReadLine()); 
      Console.WriteLine("Please enter the y value of the 2nd coordinate."); 
      float pointY2 = float.Parse(Console.ReadLine()); 
      double distance = Math.Sqrt((((double)pointX2 - (double)pointX1)) - ((double)pointY2 - (double)pointY1)) * (((double)pointX2 - (double)pointX1))-((double)pointY2 - (double)pointY1))); 
      Console.WriteLine("The distance between the points is :" + distance); 
     } 
    } 
} 

Der Fehler gezeigt ist, wie unten -

line 22 ; expected 
line 22 { expected 

Supression Zustand aktiv ist. Ich weiß nicht, wo ich falsch liege. Ich habe C# auf Turbo C gemacht und es ist einfacher als das.

+0

Warum analysieren Sie die Eingabe zu 'float', wenn Sie nur auf' double' umwandeln? Warum nicht einfach gleich "verdoppeln"? – Kyle

+0

@Kyle Ich muss weiter kodieren, wo ich nur float verwenden muss. Also, das ist nur ein Teil des Programms. Ich habe gerade diesen Teil des Codes entfernt und hier eingefügt. –

Antwort

2

Die Klammern in der Zeile mit Math.Sqrt() sind nicht ausgeglichen. Gehe vorsichtig durch sie hindurch. Sie können dies leichter finden, wenn Sie diesen komplizierten Ausdruck in mehrere Anweisungen aufteilen.

double XDiff = (double)pointX2 - (double)pointX1; 
double YDiff = (double)pointY2 - (double)pointY1; 
double squared = (XDiff - YDiff) * (XDiff - YDiff); //weirdest distance formula I've ever seen ;) 
double distance = Math.Sqrt(squared); 
distance = Math.Sqrt((XDiff * XDiff) + (YDiff * YDiff)); //now that looks better 

Ein weiterer Trick ist, die Klammern wie Klammern zu behandeln, und die Dinge auf mehrere Zeilen in einem einfachen Texteditor, während der Ausdruck zu bauen. Hier ist ein Beispiel, die genauen Klammern unter Verwendung der in der Frage gestellt:

(/* open method */ 
    (
     (
      (double)pointX2 - (double)pointX1 
     ) 
    ) - 
    (
     (double)pointY2 - (double)pointY1 
    ) 

) /* end method */ * 

(
    (
     (double)pointX2 - (double)pointX1 
    ) 
)- 
(
    (double)pointY2 - (double)pointY1 
) 

/***** Uh oh. These are extra and don't have matching open parens *****/ 
) 
) 

Sehen Sie, wie das macht es klar, wo wir zusätzliche Schließung Pars haben. Sobald Sie sicher sind, dass die Dinge ausgeglichen und korrekt sind, können Sie sie wieder auf eine einzelne Zeile reduzieren, um sie wieder in den Code einzufügen.

Da es scheint, als ob Sie etwas Übung verwenden könnten, werde ich den tatsächlichen korrigierten Ausdruck Ihnen überlassen.

+0

Das war es. Und als ich die Formel überprüft habe, war sie mathematisch falsch. Es soll sqrt [(x2-x1)^2 + (y2-y1)^2] sein –

0

Bitte ändern Sie diese Zeile in diese. Wie die Art der Anordnung ist irreführend für den Compiler.

double distance = Math.Sqrt(((((double)pointX2 - (double)pointX1)) - ((double)pointY2 - (double)pointY1)) * ((((double)pointX2 - (double)pointX1))-((double)pointY2 - (double)pointY1))); 
Verwandte Themen