Zugriff boolean

deiwid

Grünschnabel
Hallo, steh schon den ganzen Vormittag auf der Leitung und schaffe es nicht dieses Problem zu lösen.

Wie kann ich in meinem Programm aufs boolen zugreifen, damit ich den geforderten Rückgabewert bekomme?
Habe ich die Punkte aus main übernommen?

Kurz noch: Das Programm soll neun Werte einlesen und wenn ein Punkt im erzeugten Rechteck vorhanden ist soll 1 ausgegeben werden. Sonst 0.

Code:
	class Rechteck {
	int xk;
	int yk;
	int breite;
	int hoehe;

	Rechteck(int x, int y, int b, int h) {
		
		xk = x; yk = y; breite = b; hoehe = h;
	}
		

	boolean istPunktEnthalten(int punktx, int punkty) {
		
	int test1 = (xk + punktx) ;
	int test2 = (yk + punkty) ;
		

	if (test1 <= breite && test2 <= hoehe) {	//testet ob die Punkt x und Punkt y im Rechteck enthalten sind
	return true; }							
	else { return false; }

		}
	}

public class Beispiel5 {
	public static void main(String[] args) {
		int a = new Integer(args[0]); // Anzahl der erzeugten Rechtecke
		int x = new Integer(args[1]); // x Koordinate
		int y = new Integer(args[2]); // y Koordinate
		int b = new Integer(args[3]); // Breite der Rechtecke
		int h = new Integer(args[4]); // Hoehe der Rechtecke
		int m = new Integer(args[5]); // Erhoehung der x Koordinate beim 2. Rechteck und dann beim 3.
		int n = new Integer(args[6]); // Erhoehung von y Koordinate
		int punktx = new Integer(args[7]); //Punkt x
		int punkty = new Integer(args[8]); // Punkt y
		

		
		Rechteck[] eck = new Rechteck[a];

		for (int i=0; i<a ;i++){
		eck[i] = new Rechteck (x+(m*i), y*(n*i), b, h);
		
		
		//if(istPunktEnthalten()) {		//wenn der Punkt im Rechteck enthalten ist soll 1 ausgeben werden
		//system.out.println("1 ") ; }		//sonst 0
		//else{
		//system.out.println("0 ") ; }

		}
		
				
		
		

				
	    }
	
    
}
 
Natürlich musst du die Instanze (bei static Klasse) angeben:

rechteck.istPunktEnthalten(int x, int y).

Mach aber die schließende runde Klammer entweder in die nächste Zeile oder lass beide weg (lt. Conventions schlechter) und schieb das, was passieren soll einen Tabulator oder 4 Space nach rechts.

Die JRE hat aber schon eine Klasse für Rechtecke dabei: Rectangle. Wenn du den Punkt ebenfalls zu einen machst enthält die Klasse sogar eine Methode zum prüfen einer Überlappung.
 
danke für die schnelle antwort, jetzt kommt noch eine fehlermeldung in der if-Anweisung. kannst du bitte noch einen kurzen Blick darauf werfen

Code:
	class Rechteck {
	int xk;
	int yk;
	int breite;
	int hoehe;

	Rechteck(int x, int y, int b, int h) {
		
		xk = x; yk = y; breite = b; hoehe = h;
	}
		

	boolean istPunktEnthalten(int punktx, int punkty) {
		
		int test1 = (xk + punktx) ;
		int test2 = (yk + punkty) ;
		

		if (test1 <= breite && test2 <= hoehe) {	//testet ob die Punkt x und Punkt y im Rechteck enthalten sind
			return true; 
			}							
		else {
			return false; 
			}

		}
	}

public class Beispiel5 {
	public static void main(String[] args) {
		int a = new Integer(args[0]); // Anzahl der erzeugten Rechtecke
		int x = new Integer(args[1]); // x Koordinate
		int y = new Integer(args[2]); // y Koordinate
		int b = new Integer(args[3]); // Breite der Rechtecke
		int h = new Integer(args[4]); // Hoehe der Rechtecke
		int m = new Integer(args[5]); // Erhoehung der x Koordinate
		int n = new Integer(args[6]); // Erhoehung von y Koordinate
		int punktx = new Integer(args[7]); //Punkt x
		int punkty = new Integer(args[8]); // Punkt y
		

		
		Rechteck[] eck = new Rechteck[a];

		for (int i=0; i<a ;i++){
			eck[i] = new Rechteck (x+(m*i), y*(n*i), b, h);
			


			if(Rechteck.istPunktEnthalten(punktx,punkty)) {		
			System.out.println("1 ") ; 
				}	
			
			else{
			System.out.println("0 ") ; 
				}

		}
		
				
		
		

				
	    }
	
    
}
 
Du hast die Klasse angegeben, das geht nur mit statischen Methoden, da diese nicht mit den Instanzen, sondern nur Klassen zusammenhängen.
Du musst es mit der Variable, die auf die Instanz zeigt zugreifen.

Java:
Rechteck[] eck = new Rechteck[a];
for (int i=0; i<a ;i++) {
	eck[i] = new Rechteck (x+(m*i), y*(n*i), b, h);

	if(eck[i].istPunktEnthalten(punktx,punkty)) {
		System.out.println("1 ") ; 
	}
	else {
		System.out.println("0 ") ; 
	}
}

Oder direkt per if(new Rechteckt(x+(m*i), y*(n*i), b, h).istP.....), dann spaarst du dir das Array. Wobei du dir das auch komplett spaaren kannst, da du die Rechtecke nach der for sowieso nicht mehr brauchst, und sie deshalb darin deklarieren kannst.
 

Neue Beiträge

Zurück