Kleines Java Programm

Stone2k7

Grünschnabel
Hallo Leute,ich bin neu hier und hoffe das ihr mir gleich bei meinem ersten Problem helfen könnt...Ich möchte ein Programm schreiben, welches folgende Aufgabenstellung hat:

Es soll ein Programm entwickelt werden, das berechnet, ob sich zwei Kreise überlappen, berühren oder
nichts von beidem.
Aufgabe: Fordern Sie den Benutzer zunächst auf, eine Zahl anzahl einzugeben, die die Anzahl an
Überprüfungsszenarien angibt. In jedem Überprüfungsszenario wird der Benutzer dann aufgefordert
sechs int-Werte einzugeben: für zwei Kreise jeweils die x-Koordinate, die y-Koordinate und den Radius
(x1 y1 r1 x2 y2 r2). Der Radius soll dabei immer ein positiver Wert sein. Anschließend soll Ihr Programm
in jedem Überprüfungsszenario berechnen, ob die beiden Kreise überlappen (Ausgabe: „Circles
overlap“), ob sie sich berühren (Ausgabe: „Circles touch“) oder keines von beidem (Ausgabe: „Circles are
separated“).
Beispiel:
Eingabe: Ausgabe:
3
0 0 10 0 0 5 Circles overlap
0 0 10 0 14 4 Circles touch
0 0 10 0 15 4 Circles are separated


Leider weiss ich nicht wie ich das machen soll....Vielleicht kann mir ja einer helfen...
 
Mit ein bisschen Vektorrechnung ist die Aufgabe nicht so schwierig. Nur kurz nachdenken:

Wann überlappen sich zwei Kreise? Wenn die Entfernung der Mittelpunkte (Betrag des Vektors von x1, y1 nach x2, y2) kleiner ist als die Summe der Radien.
Wann berühren sich zwei Kreise? Wenn die Entfernung der Mittelpunkte gleich der Summe der Radien ist.
 
Mit ein bisschen Vektorrechnung ist die Aufgabe nicht so schwierig. Nur kurz nachdenken:

Wann überlappen sich zwei Kreise? Wenn die Entfernung der Mittelpunkte (Betrag des Vektors von x1, y1 nach x2, y2) kleiner ist als die Summe der Radien.
Wann berühren sich zwei Kreise? Wenn die Entfernung der Mittelpunkte gleich der Summe der Radien ist.

Ja das hab ich verstanden...bloss ich weiss nicht wie ich den ersten und zweiten satz in der aufgabenstellung umsetze :(
 
Mal ein paar Hilfestellungen - eine vollständige Lösung wirst du von mir nicht bekommen, du sollst ja auch was lernen :)

1. Benutzereingaben auf der Konsole liest man über System.in. Dies liefert dir einen Inputstream. Den kannst du parsen und unter anderem auch prüfen, ob der übergebene Wert ein int-Wert ist.

2. Die Überprüfung würde ich in einer Methode realiseren, die als Parameter die Werte x1, y1, r1, x2, y2, r2 besitzt (alle vom Datentyp int).
Innerhalb der Methode musst du dann halt prüfen, ob eine Überlappung oder Berührung besteht.

3. Beide Mechanismen (Eingabe und Prüfung) testest du erstmal separat. Für den Test der Einlesemethode würde ich mir die einzelnen Werte zwischenspeichern und dann ausgeben. Die Prüfmethode kannst du mit festen Werten aufrufen, von denen du das Ergebnis bereits kennst.

4. Jetzt musst du nur noch die Schritte 1 und 2 miteinander "verwursten".

5. Im Handbuch der Java-Programmierung und "Java ist auch eine Insel" findest du eigendlich alles über Benutzereingaben, -ausgaben, eigene Methoden und Java im allgemeinen.


Gruss, Manuel
 
Mal ein paar Hilfestellungen - eine vollständige Lösung wirst du von mir nicht bekommen, du sollst ja auch was lernen :)

1. Benutzereingaben auf der Konsole liest man über System.in. Dies liefert dir einen Inputstream. Den kannst du parsen und unter anderem auch prüfen, ob der übergebene Wert ein int-Wert ist.

2. Die Überprüfung würde ich in einer Methode realiseren, die als Parameter die Werte x1, y1, r1, x2, y2, r2 besitzt (alle vom Datentyp int).
Innerhalb der Methode musst du dann halt prüfen, ob eine Überlappung oder Berührung besteht.

Zu 1. Ja das weiss ich,bloss weiss ich nicht genau wie ich das mache mit den mehreren Szenarien...Alles mit einem Szenario würde ich hinbekommen,nur nicht mit mehreren...
 
Du liest zuerst die Anzahl von Szenarien ein. Dann wiederholst Du den Rest des Programms (Einlesen der Paramter und Berechnung der Überlappung etc.) mittels for-Schleife sooft wie angegeben.

Java:
int anzahl = ... // Benutzereingabe

for (int i = 0; i < anzahl; i++) {

  // 6 Parameter einlesen
  // Berechnung
  // Ausgabe

}
 
Zurück