JAVA: Abstand zweier Koordinaten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JAVA: Abstand zweier Koordinaten

    Hi Leute,

    hab in der Schule folgende Aufgabe bekommen:

    Der Abstand zweier Punkte p1 und p2 (x/y) soll nach Eingabe der Koordinaten berechnet werden und ausgegeben. Hilfe: -> math.sqrt(4)=2

    Leider finde ich im Internet gar nichts dazu (math.sqrt) und weiß mir selber auch nicht weiter zu helfen bzw. wie man es anwendet, da ich vom Coden null Ahnung habe und unser Lehrer nicht wirklich hilft .
    Kann mir jemand mal nen guten Ansatz schreiben oder mir das Programm mal verständlich erklären? (für dummys) Und das ganze in Java als Programmiersprache.

    Wäre echt nice von euch!

    DAnke

    euer jPG
  • Moin,

    Eingaben machst du mit dem Java.util.Scanner(System.in). Ausgaben mit System.out.println("string"). Naja, und die Mathematik mit den Potenz- (pow) und Wurzelfunktionen (sqrt). Ist ein ganz normaler Pythagoras.

    Quellcode

    1. Math.sqrt(Math.pow(x2-x1, 2)+Math.pow(y2-y1, 2));


    Schau dir mal die ersten Postings in diesem Forum an um das Spiel drumherum zu verstehen.
    Z.B.
  • Hallo, ich habe das jetzt mal so gemacht:


    import java.io.*;


    public class Test
    {
    public static void main (String argv[]) throws IOException
    {
    String str;
    int x1;
    int x2;
    int y1;
    int y2;
    int Abstand;

    BufferedReader input = new BufferedReader (new InputStreamReader (System.in));

    System.out.print ("Bitte geben Sie x1 ein: ");
    x1 = Integer.parseInt(input.readLine());

    System.out.print ("Bitte geben Sie y1: ");
    y1 = Integer.parseInt(input.readLine());

    System.out.print ("Bitte geben Sie x2: ");
    x2 = Integer.parseInt(input.readLine());

    System.out.print ("Bitte geben Sie y2: ");
    y2 = Integer.parseInt(input.readLine());

    Abstand = Math.sqrt((x1 * x2) + (y1 * y2));

    System.out.print ("Abstand: ");

    System.out.println(x + " * " + x + " y + "*" y + = " + Abstand);
    }
    }


    Jetzt sagt er mir: " possible loss of precision bei dem Abstand = math.sqrt... woran liegt das? ode rhab ich generell die richtige richtung eingeschlagen?
  • Quellcode

    1. import java.io.*;
    2. public class Test
    3. {
    4. public static void main (String argv[]) throws IOException
    5. {
    6. String str;
    7. double x1;
    8. double y1;
    9. double x2;
    10. double y2;
    11. double Abstand;
    12. BufferedReader input = new BufferedReader (new InputStreamReader (System.in));
    13. System.out.print ("Bitte geben Sie x1 ein: ");
    14. x1 = Integer.parseInt(input.readLine());
    15. System.out.print ("Bitte geben Sie y1: ");
    16. y1 = Integer.parseInt(input.readLine());
    17. System.out.print ("Bitte geben Sie x2: ");
    18. x2 = Integer.parseInt(input.readLine());
    19. System.out.print ("Bitte geben Sie y2: ");
    20. y2 = Integer.parseInt(input.readLine());
    21. Abstand Math.sqrt ((y1 - x1) * (y1 - x1) + (y2 - x2) * (y2 - x2));
    22. System.out.print ("Abstand: ");
    23. Sytem.out.println("Abstand der 2 Punkte beträgt " +Abstand);
    24. }
    25. }
    Alles anzeigen




    So hab ich es jetzt, dürfte richtig sein oder?
  • Dann solltest du nicht Integer.parseInt() verwenden, sondern z.B. Double, denn Integer ist nur für ganzzahlige Werte. Außerdem solltest du generell noch gucken, dass du da nur die Wurzel aus Zahlen größer 0 ziehst.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • ?? hilf mir doch mal bitte nen bisschen also ich habs bis jetzt so weit:

    import java.io.*;
    import java.lang.Double;

    public class Test
    {
    public static void main (String argv[]) throws IOException
    {
    String str;
    double x1;
    double y1;
    double x2;
    double y2;
    double Abstand;

    BufferedReader input = new BufferedReader (new InputStreamReader (System.in));

    System.out.print ("Bitte geben Sie x1 ein: ");
    x1 = Integer.parseInt(input.readLine());

    System.out.print ("Bitte geben Sie y1: ");
    y1 = Integer.parseInt(input.readLine());

    System.out.print ("Bitte geben Sie x2: ");
    x2 = Integer.parseInt(input.readLine());

    System.out.print ("Bitte geben Sie y2: ");
    y2 = Integer.parseInt(input.readLine());

    Abstand = Math.sqrt ((y1 - y2) * (y1 - y2) + (x1 - x2) * (x1 - x2));

    System.out.print ("Abstand: ");

    System.out.println("Abstand der 2 Punkte beträgt " +Abstand);
    }
    }


    Wie mache ich aus dem double bei der Enigabe nen Float oder Double? Und wie mach ich das mit dem < 0 ?
    Ich mach das erst seit gestern Leute :( bin schon am Java ist auch eine Insel schauen nud so aber ich brauch nen kleinen Startup tipp ;(
    und von schleifen und so hab ich noch keine ahnung, falls einer damit an kommt ^^
  • Unter dem Eingabefeld hast du übrigens Buttons für das SyntaxHighlighting. Einfach Quelltext markieren und das Java-Kaffee Symbol auswählen. Außerdem solltest du deinen Quelltext einrücken. Das hilft nicht nur dir, sondern auch uns!

    Ansonsten solltest du nicht immer schon nach 2 Minuten schon aufgeben. Erster Schritt beim Programmieren lernen ist Eigeninitiative.. Google beim nächsten mal.. sind ja noch die absoluten Java Basics.

    Für dieses Problem erhältst du noch die Lösungen: Statt Integer.parseInt nimmst du Double.parseDouble.
    und die Abfrage für einen Wert sieht so aus:

    Quellcode

    1. if(x1<0) {
    2. System.out.println("Fehler");
    3. System.exit(0);
    4. }
  • Moin,dieser Thread hier hat mir sehr geholfen da ich eine ähnliche Aufgabe machen möchte...bei mir gibt es nur den Unterschied das man am anfang des Programms auswählen kann wieviele Überprüfungsszenarien man haben möchte...Also wenn man z.B 5 eingibt kann man in jedem von den 5 szenarien 2 Punkte angeben die dann berechnet werden!

    Bloss weiss ich nicht wie ich das machen soll....kann mir da einer helfen??
  • Abend... eigentlich keine große Sache....

    Quellcode

    1. public class Test {
    2. public static void main (String argv[]) throws IOException
    3. {
    4. BufferedReader input = new BufferedReader (new InputStreamReader (System.in));
    5. System.out.print ("Welches Szenario ");
    6. int choice = Integer.parseInt(input.readLine());
    7. switch(choice) {
    8. case 1:
    9. szenario1();
    10. break;
    11. case 2:
    12. szenario2();
    13. break;
    14. case 3:
    15. szenario3();
    16. break;
    17. }
    18. }
    19. public static void szenario1() {
    20. BufferedReader input = new BufferedReader (new InputStreamReader (System.in));
    21. System.out.print ("Frage1 ");
    22. String choice = input.readLine();
    23. }
    24. public static void szenario2() {
    25. ....
    26. }
    27. }
    Alles anzeigen
  • Wenn du sie direkt auswertest, brauchst du den Code nur in eine Funktion zu stecken und die 5x aufrufen:

    Quellcode

    1. public class Test {
    2. public static void main (String argv[]) throws IOException {
    3. BufferedReader input = new BufferedReader (new InputStreamReader (System.in));
    4. System.out.print ("Wieviele Szenarien ");
    5. int choice = Integer.parseInt(input.readLine());
    6. for(int i=0; i<choice; i++) {
    7. szenario1();
    8. }
    9. }
    10. public static void szenario1() { ... }
    11. }
    Alles anzeigen