Punkt auf,über,unter oder zwischen 2 Geraden

JT1337

Mitglied
Seid gegrüßt!
Ich bin im 2 Jahr Abendschule Elektrotechnik und habe seit heuer das Vergnügen Java programmieren zu Lernen :)

Mir wurden 2 Geraden im Koordinatensystem angegeben;
y = -1,8*x+1,1
y= 0,6*x+2,8
- Nun soll ich die Koordinaten(x,y) eines Punkte einlesen - bis hierher kein Problem.
Dann aber soll ich Vergleichen, ob der eingegebene Punkt auf,über,unter oder zwischen den Geraden liegt.
Dies soll ich mittels if/else Verzweigung erledigen.


Unten ist noch das Programm, welches ich bis jetzt geschrieben habe, für mehr würde ich bitte bitte Hilfe oder Tipps brauchen, kann mir jemand helfen?

package hausuebungen;
import java.util.Scanner;
/** Programm soll die Koordinaten eines Punktes von der Tastatur einlesen und ausgeben,
* ob dieser auf,über,unter oder zwischen den Geraden liegt
* @author tomal
*
*/
public class Geraden_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// Variablen festlegen
double Px,Py,y1,y2;
double k1 = -1.8; double d1 = 1.1;
double k2 = 0.6; double d2 = 2.8;
// Koordinaten des Punktes eingeben
System.out.print("Geben sie die x-Koordinate des Punktes ein:");
Px = sc.nextDouble();
System.out.print("Geben sie die y-Koordinate des Punktes ein:");
Py = sc.nextDouble();
// Berechnung
y1 = Px*k1+d1;
y2 = Px*k2+d2;
 

mihe7

Top Contributor
Bis dahin sieht das doch gar nicht so verkehrt aus. Ich verstehe jetzt nur nicht, wo das Problem liegt. Du weißt jetzt, welche y-Werte die beiden Geraden an der Stelle auf der x-Achse annehmen, an er sich auch Dein Punkt befindet.

Jetzt ermittelst Du noch, welche der beiden Koordinaten y1 und y2 die größere ist. Dann kannst Du sagen: liegt Py über der größeren y-Koordinate, liegt der Punkt über den Geraden, liegt Py dagegen unter der kleineren y-Koordinate, liegt der Punkt unter den Geraden. Ansonsten könnte es sein, dass Py (und damit der Punkt) über der kleineren aber unter der größeren y-Koordinate und damit zwischen den Geraden liegt. Ist auch das nicht der Fall, muss P auf (mind.) einer Gerade liegen.
 

JT1337

Mitglied
Lieben Dank für die rasche Antwort mihe7!
So weit so gut. Ich stand gestern Abend schon etwas auf der Leitung.
Mein fertiges Programm würde nun so Aussehen und habe es auch Online bei meinem Professor abgegeben, wo der Server zurück meldet: 0,8/1 Punkten.
Also nicht so schlecht aber irgendetwas dürfte noch nicht stimmen?


package hausuebungen;
import java.util.Scanner;
/** Programm soll die Koordinaten eines Punktes von der Tastatur einlesen und ausgeben,
* ob dieser auf,über,unter oder zwischen den Geraden liegt
* @author tomal
*
*/
public class Geraden_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// Variablen festlegen
double Px,Py,y1,y2;
double k1 = -1.8; double d1 = 1.1;
double k2 = 0.6; double d2 = 2.8;
// Koordinaten des Punktes eingeben
System.out.print("Geben sie die x-Koordinate des Punktes ein:");
Px = sc.nextDouble();
System.out.print("Geben sie die y-Koordinate des Punktes ein:");
Py = sc.nextDouble();
// Berechnung
y1 = Px*k1+d1;
y2 = Px*k2+d2;
if (Py>y2) System.out.println("Punkt liegt über den Geraden");
else if (Py<y1) System.out.println("Punkt liegt unter den Geraden");
else if (Py>y1&&Py<y2) System.out.println("Punkt liegt zwischen den Geraden");
else System.out.println("Punkt liegt auf einer der Geraden");
sc.close();
}
 

MoxxiManagarm

Top Contributor
Du hast 2 Geraden mit unterschiedlicher Steigung. Die höhere Gerade vor dem Schnittpunkt ist nicht die höhere nach dem Schnittpunkt. Es reicht also nicht aus nur ein y hier zu prüfen:
Java:
if (Py>y2) System.out.println("Punkt liegt über den Geraden");
Py muss größere als y1 UND y2 sein um über beiden gerade zu liegen.

Ähnliches gilt für die anderen ifs
 

JT1337

Mitglied
Danke für eure Hilfe, die Lösung;

package hausuebungen;
import java.util.Scanner;
/** Programm soll die Koordinaten eines Punktes von der Tastatur einlesen und ausgeben,
* ob dieser auf,über,unter oder zwischen den Geraden liegt
* @author tomal
*
*/
public class Geraden_2 {

/**
* Gibt an ob double x ueber double y und double z ist
* @param x erster Parameter
* @param y zweiter Parameter
* @param z dritter Parameter
* @Return wenn ueber true
*/
public static boolean ueber(double x, double y,double z) {
if (x>y&&x>z) return true;
else return false;
}

/**
* Gibt an ob double x unter double y und unter double z ist
* @param x erster Parameter
* @param y zweiter Parameter
* @param z dritter Parameter
* @Return wenn unter true
*/
public static boolean unter(double x, double y,double z) {
if (x<y&&x<z) return true;
else return false;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// Variablen festlegen
double pX,pY,y1,y2;
double k1 = -1.8; double d1 = 1.1;
double k2 = 0.6; double d2 = 2.8;
// Koordinaten des Punktes eingeben
System.out.print("Punkt x:");
pX = sc.nextDouble();
System.out.print("Punkt y:");
pY = sc.nextDouble();
// Berechnung
y1 = pX*k1+d1;
y2 = pX*k2+d2;
if (ueber(pY,y1,y2)) System.out.println("Der Punkt liegt ueber den Geraden");
else if (unter(pY,y1,y2)) System.out.println("Der Punkt liegt unter den Geraden");
else System.out.println("Der Punkt liegt zwischen den Geraden");
sc.close();
}
}
 

MoxxiManagarm

Top Contributor
Besser, jetzt hast du es dir aber schwer gemacht.

Java:
// schlecht
public static boolean ueber(double x, double y,double z) {
    // Sowas ist immer total überflüssig:
    if (x>y&&x>z) return true;
    else return false;
}

// besser durch sinnigere Benennung und vereinfachten return
public static boolean ueber(double y, double y1, double y2) {
    return y>y1 && y>y2;
}

// am besten lass die Methode aber weg
if (pY>y1 && pY>y2) System.out.println("Der Punkt liegt ueber den Geraden");

// du hast auch noch den Fall AUF den Geraden nun vernachlässigt. In deiner Aufgabe steht er mit drin.
if (pY==y1 || pY==y2) System.out.println("Der Punkt liegt auf den Geraden");
 

JT1337

Mitglied
Super! Vielen Dank für die genaue Erläuterung.

Mein Professor hat aber auf die "Methoden Methode" bestanden, da sonst das Beispiel als falsch gewertet wurde.
Vermutlich, weil wir es letzte Stunde gelernt haben :)
 

Blender3D

Top Contributor
Dann aber soll ich Vergleichen, ob der eingegebene Punkt auf,über,unter oder zwischen den Geraden liegt.

Um zu bestimmen, ob ein Punkt oberhalb oder unterhalb einer Geraden liegt muss vorweg die Koordinate die für die Höhe gewählt wird bestimmt werden. Im 2D Raum ist da wohl die y Koordinate und im 3D Raum die z-Koordinate günstig. Des Weitern muss dann der Schnittpunkt der Höhenachse durch den Punkt mit der Geraden ermittelt werden. Dann kann man bestimmen ob der Punkt oberhalb, unterhalb oder auf der Geraden liegt.

--> 2D
g: y = f(x)
P: p = (x,y)

yCompare = f( p.x )
wenn yCompare < p.y --> Punkt oberhalb
wenn yCompare > p.y --> Punkt unterhalb
wenn yCompare == p.y --> Punkt auf der Geraden

--> 3D
g: z = f(x,y)
P: p = (x,y,z)

zCompare = f( p.x, p.y )
wenn yCompare < p.z --> Punkt oberhalb
wenn yCompare > p.z --> Punkt unterhalb
wenn zCompare == p.z --> Punkt auf der Geraden
 

Dimax

Top Contributor
Was passiert wenn ich nach
Java:
System.out.print("Geben sie die x-Koordinate des Punktes ein:");
Px = sc.nextDouble();
System.out.print("Geben sie die y-Koordinate des Punktes ein:");
Py = sc.nextDouble();
sowas wie -> "ungefähr 2.0 oder 4.0 " eintippe.
Fehlt etwas im Code
 

Blender3D

Top Contributor
sowas wie -> "ungefähr 2.0 oder 4.0 " eintippe
Du bekommst einen Fehler da er sich 4,0 für einen Double erwartet.
Die Methode ist zum Einlesen eines Doubles sowieso ungeeignet, da eventuelle Eingabefehler nicht abgefangen werden. Besser man definiert sich so etwas um eine Zahl einzulesen -->

Java:
private static double readDouble(Scanner scanner, String label) {
        double value = 0;
        boolean ok = false;
        do {
            System.out.print(label + "\t");
            try {
                value = Double.parseDouble(scanner.next());
                ok = true;
            } catch (NumberFormatException e) {
                System.err.println("Bitte eine Zahl eingeben!");
            }
        } while (!ok);
        return value;
    }
;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Anker Punkt setzen. Java Basics - Anfänger-Themen 1
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
JavaBeginner22 Punkt auf Gerade Java Basics - Anfänger-Themen 59
K Gleitkommazahl macht man 0 punkt matisse oder 1 punkt matisse Java Basics - Anfänger-Themen 2
B String - Wörter finden, welches Punkt und entsprechender Pre / Suffix hat? Java Basics - Anfänger-Themen 30
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
A Java . punkt neben einer Zahl. Java Basics - Anfänger-Themen 1
Ich lerne Java. Methoden Mehrere Methoden mit Punkt Java Basics - Anfänger-Themen 45
F Aufgabe: Abstand von einem Punkt zu einem anderen Punkt Java Basics - Anfänger-Themen 10
H Punkt bewegt sich auf einer Ellipse Java Basics - Anfänger-Themen 6
P Datentypen Kann ich bei double Komma statt Punkt eingeben? Java Basics - Anfänger-Themen 14
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
L Punkt innerhalb eines Bereiches verschieben Java Basics - Anfänger-Themen 9
G Bis zu einem bestimmten Punkt aus Datei lesen Java Basics - Anfänger-Themen 2
L Java Text datei nur bis zu einem Punkt auslesen? Java Basics - Anfänger-Themen 3
E Erste Schritte Vorschläge für mich zum Thema Punkt vor Strich ? Java Basics - Anfänger-Themen 7
Z Double in komma und Punkt akzeptieren -> Robusteeingabe Java Basics - Anfänger-Themen 7
R Erste Schritte Taschenrechner - Punkt-vor-Strich Rechnung Java Basics - Anfänger-Themen 1
S Punkt in Java zeichnen Java Basics - Anfänger-Themen 14
C Methoden Diagonalen am best. Punkt im zweidimensionales array finden Java Basics - Anfänger-Themen 3
Y Was bedeutet "this" ohne dem Punkt und dem Atrributnamen danach? Java Basics - Anfänger-Themen 2
M Punkt auf eine Farbe prüfen Java Basics - Anfänger-Themen 8
H inputfeld dezimalzahl mit komme statt punkt Java Basics - Anfänger-Themen 12
R Double: auf einmal Komma statt Punkt Java Basics - Anfänger-Themen 4
H Methoden Array aus Punkten erzeugen, mittels Punkt-Klasse Java Basics - Anfänger-Themen 5
S 3d Punkt in Java3D Java Basics - Anfänger-Themen 4
J Taschenrechner Punkt vor Strich Java Basics - Anfänger-Themen 9
K Methoden contains()-Methode für Punkt in Polygon Java Basics - Anfänger-Themen 5
I Externer Methodenaufruf, Punkt-Notation Java Basics - Anfänger-Themen 11
R ArrayList<String> Komma oder Punkt "replacen" Java Basics - Anfänger-Themen 5
C Punkt oder Kommanotation. Java Basics - Anfänger-Themen 7
B Kreis,Punkt,Zylinder Java Basics - Anfänger-Themen 6
A Eine Frage zu AWt in JAVA, wie wähle ich ein Punkt aus`? Java Basics - Anfänger-Themen 4
H sprung zu einem anderen punkt im script Java Basics - Anfänger-Themen 11
radiac Datentypen RANDOM-punkt setzen INNERHALB eines BEREICHes Java Basics - Anfänger-Themen 2
TheKing Objekt um Punkt kreisen lassen Java Basics - Anfänger-Themen 7
W Regex mit Punkt Java Basics - Anfänger-Themen 2
T Punkt zeichnen auf sinus Java Basics - Anfänger-Themen 7
T mehrere methoden durch punkt getrennt Java Basics - Anfänger-Themen 2
R Meine erste Klasse: Punkt Java Basics - Anfänger-Themen 3
G Punkt auf Bildschirm erstellen? Java Basics - Anfänger-Themen 14
G bei double nur Wert vor Punkt ausgeben Java Basics - Anfänger-Themen 6
T Wie Eingabe von Gleitkommazahl mit Komma statt Punkt Java Basics - Anfänger-Themen 4
B Bestimmten Punkt im KOS ermitteln Java Basics - Anfänger-Themen 14
W Punkt statt Komma? Java Basics - Anfänger-Themen 2
G Punkt bz. Kugel Java Basics - Anfänger-Themen 6
K AWT: Punkt (0,0) hinter Titelzeile oder 'getTitelzeilenhöhe' Java Basics - Anfänger-Themen 5
G contains - Punkt in Kreis enthalten? Java Basics - Anfänger-Themen 6
richis-fragen GlassPane über JScrollPane legen Java Basics - Anfänger-Themen 6
A Server - Client Nachrichtenaustausch über Eventbus Java Basics - Anfänger-Themen 12
P Neue Java v8 JRE Version nicht über alte drüber installierbar: Wie sonst? Java Basics - Anfänger-Themen 7
D Downloadfortschritt von Datei über Google Drive API v3 Java Basics - Anfänger-Themen 10
B großzügiges Pixelraster über Bildschirm legen Java Basics - Anfänger-Themen 7
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
S Java über SSH Java Basics - Anfänger-Themen 13
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
W char über die Konsole? Java Basics - Anfänger-Themen 7
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
J Wert zurückgeben über get Methode Java Basics - Anfänger-Themen 8
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
A Array Ansprache einer Zelle über Punktnotation? Java Basics - Anfänger-Themen 3
O Java über cmd benutzen ? Java Basics - Anfänger-Themen 5
J Variablenzugriff über string Java Basics - Anfänger-Themen 18
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
M Java Kompilieren über Package grenzen hinaus Java Basics - Anfänger-Themen 4
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
B OOP-Anfänge über CMD + Editor Java Basics - Anfänger-Themen 30
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
1 Erste Schritte Was denkt ihr über eines meiner ersten Javaprogramme? Java Basics - Anfänger-Themen 2
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
J Button über Pfeiltasten bewegen Java Basics - Anfänger-Themen 8
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
T DoWhile Schleife über mehrere Mothoden Java Basics - Anfänger-Themen 5
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
J Gefilterten Stream über die Konsole ausgeben Java Basics - Anfänger-Themen 1
S Variablen Klassenvariable über Objekt aufrufen Java Basics - Anfänger-Themen 16
S Bilder über Socket Senden Java Basics - Anfänger-Themen 1
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
L Iterieren über eine CSV Datei Java Basics - Anfänger-Themen 7
I GUI über Eclipse oder NetBeans Java Basics - Anfänger-Themen 23
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben