Werte selbst eintragen

Ork

Mitglied
Tag zusammen,

ich würde gern bei folgendem Programm selbst Werte einfügen können, da bis jetzt nur iwelche Zahlen ausgegeben werden.
Bitte um eure Hilfe.
Wird etwas lang, hilft aber hoffentlich zum Verständis meines Anliegens. 😉

Java:
package uebung7;

public class main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {// Teste Rechteck

		// Leere Initalisierung
		rechteck nullEck = new rechteck();
		System.out.println("Rechteck nullEck[0,0][0,0] erstellt");
		// Erwartet: 0
		System.out.println("Flächeninhalt von nullEck [soll:0]: "
				+ nullEck.getFlächeninhalt());

		// Initalisierung mit Werten
		rechteck werteEck = new rechteck(8, 7, 3, 1);
		System.out.println("Rechteck werteEck[8,7][3,1] erstellt");
		// Erwartet: 30
		System.out.println("Flächeninhalt von werteEck [soll:30]: "
				+ werteEck.getFlächeninhalt());
	
		punkt p = new punkt(9, 8);
		// Punkte sollte nicht in wertEck liegen
		System.out.println("Punkt P[9,8] erstellt");
		System.out.println("Punkt p liegt in wertEck [soll: false]: " + werteEck.isInRechteck(p));
		
		// verschieben
		werteEck.move(3, 2);
		// Punkte sollte in wertEck liegen
		System.out.println("Punkt p liegt in wertEck [soll: true]: " + werteEck.isInRechteck(p));

	}

}

Java:
package uebung7;

public class punkt {
	
	private int x = 0;
	private int y = 0;

	public punkt(int x, int y) {
		this.x = x;
		this.y = y;
	}

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

}

Java:
package uebung7;

public class rechteck {

	/**
	 * @param args
	 */
	
		punkt ObenRechts;
		punkt UntenLinks;
		public rechteck() {
			this.ObenRechts = new punkt(0, 0);
			this.UntenLinks = new punkt(0, 0);
		}
	public  rechteck(int ObenX,int ObenY ,int UntenX, int UntenY){
		this.ObenRechts= new punkt (ObenX,ObenY);
		this.UntenLinks = new punkt(UntenX,UntenY);
		
	}
	public rechteck(punkt oP, punkt Up) {
		this.ObenRechts = oP;
		this.UntenLinks = Up;
	}

	


	public int getFlächeninhalt() {

		int b = ObenRechts.getX() - UntenLinks.getX();
		int a = ObenRechts.getY() - UntenLinks.getY();

		int result = a * b;

		return result;
	}

	public void move(int x, int y) {
		this.ObenRechts.setX(this.ObenRechts.getX() + x);
		this.ObenRechts.setY(this.ObenRechts.getY() + y);

		this.UntenLinks.setX(this.UntenLinks.getX() + x);
		this.UntenLinks.setY(this.UntenLinks.getY() + y);
	}

	public Boolean isInRechteck(punkt p) {
		return isInRechteck(p.getX(), p.getY());
	}

	public Boolean isInRechteck(int x, int y) {

		Boolean inXBounds = false;
		Boolean inYBounds = false;

		// Ob X drin liegt
		if (x <= this.ObenRechts.getX() && x >= this.UntenLinks.getX()) {
			inXBounds = true;
		}

		// Ob Y drin liegt
		if (y <= this.ObenRechts.getY() && y >= this.UntenLinks.getY()) {
			inYBounds = true;
		}

		if (inXBounds && inYBounds) {
			return true;
		} else {
			return false;
		}
	}
	}

Gruß Ork
 
Die ursprüngliche Aufgabe war:
Entwerfen Sie eine Klasse "Rechteck", die
· in ihre Datenfelder 2 Koordinatenpunkte aufnehmen kann als linke untere und
rechte obere Ecke,
· 2 Konstruktoren enthält (Initialisierung mit 0 und Initalisierung mit
übergebenen Werten)
und
· Methoden enthält, um
o das Rechteck zu verschieben,
o den Flächeninhalt auszurechnen und
o festzustellen, ob ein übergebener Punkt innerhalb des Rechtecks liegt.
Erstellen Sie zuvor eine Klasse "Punkt", die einen X- und einen Y-Wert als Attribut
enthält (mit entsprechenden Zugriffmethoden).
Implementieren Sie eine Testumgebung mit einer Hauptklasse, die die main-
Methode enthält.

Zusätzlich soll jetzt möglich sein, die Punkte vom Rechteck links unten und rechts oben und zusätzlich eine Verschiebung vom Rechteck anzugeben zu können.
 
Ok, soweit klar.

Was geht jetzt noch nicht obwohl du versucht hast es umzusetzen? Wie hast du es versucht?
Wir möchten ja nicht ewig rumraten, wo Fehler sind, was du vorhast und dergleichen.

Du hast 2 Konstruktoren drin, einen um das Rechteck mit den Werten zu erzeugen. Und du hast eine Methode "move" drin zum Verschieben.

Was genau passt noch nicht?
[TIPP]Wenn die Abgabe automatisch überprüft wird (zB. Hochladen in Universitäten) wäre es ratsam die Klasse auch "Rechteck" zu nennen, sonst denkt ein eventueller automatischer Prüfmechanismus, sie existiert nicht, wenn du sie "rechteck" nennst!

Und generell werden Klassennamen zum Wortbeginn groß geschrieben.[/TIPP]
 
Zuletzt bearbeitet:
Wenn ich das Programm laufen lasse, dann kann ich die Werte für das Rechteck und Verschiebung ja nur im Bearbeitungsfenster selbst ändern, ich würde aber gern in der Konsole die Werte eingeben können.
Ich weiß nur, dass das über int usw. möglich ist, nur wie genau, weiß ich halt leider nicht.
 
Ja, das sieht auf jeden Fall schonmal hilfreich aus.
Danke.

Da ich aber noch totaler Anfänger in Sachen Java bin, weiß ich trotzdem nicht wie ich das Programm jetzt ändern kann. :bahnhof:
 
du hast doch in dem Beispiel der Seite, eine Minimalausführung des Programmes. Diese Zeilen musst du halt entsprechend bei dir einarbeiten. Alles beginnt in der Main.

Überlege dir, was du an Daten einlesen willst und wann diese verarbeitet werden sollen. Das ergibt dann die Reihenfolge der Befehle. Irgendwo wird es noch die Ausgabe geben und das wars.

Bissel Initiative bitte.
 
Ich würde gerne Eigeninitiative zeigen und mich da reinarbeiten.
Allerdings, wie schon erwähnt, habe ich keinerlei Erfahrung mit Java, d.h. es bringt mir das Beispiel auch nichts, weil ich dann immernoch nicht weiß, wie ich was und wo einzutragen habe.
Und da ich das bis kommenden Freitag fertig haben muss und meine Zeit derweilen für wichtigeres draufgeht, habe ich mich ja auch an die Community hier gewendet, in der Hoffnung, dass mir jmd die Lösung zeigt.
 

Zurück
Oben