Ich steige da nicht durch!

Status
Nicht offen für weitere Antworten.
R

Roar

Gast
lol, klar... 1 tag vor abgabetermin fängst du mal an dich damit zu beschäftigen und hoffst einfach mal darauf dass hier leute sind die nix anderes zu tun haben als hausaufgaben zu lösen? ;)
*verschoben*
 
H

Hier!

Gast
Ne nicht ganz, ich habe mich schon länger damit beschäftigt, aber aufgabe 3 ist für mich ein buch mit 7 Siegeln!
 
R

Roar

Gast
da wirst doch wohl schon einen ansatz haben, oder? zumindest aufgabe a) sollte lösbar sein. wenn du allerdings nie an den vorlesungen teilgenommen hast, hastdu sicher ein problem ;)
 
H

Hier!

Gast
Doch ich war da... und a war nicht das problem... nur wie kann ich (siehe aufgabe b)) 2 Rechtecke vergleichen wenn nur eins übergeben wird....??
 

lin

Top Contributor
lol ^^ :wink:

Hmm.. Ich halte es nicht für sinnvoll dir die Aufgabe hier vorzulösen, dabei lernst du nix. Also fange mal an zu coden und wenn du ein konkretes Problem hast, postest dus hier. Wenn du wirklich gar keine Ahnung hast, wie du anfangen musst, njaa, dann besuch die Vorlesungen öfter :wink: oder schreib wenigstens was du dir bereits überlegt hast, dann wird dir hier auf geholfen.
 

Illuvatar

Top Contributor
Ich verstehe das mal so, dass das eine Membermethode (heißt das so?) sein soll, und das übergebene Objekt mit dem Objekt vergleicht, zu dem die Methode gehört (also this)
 
H

Hier!

Gast
Code:
class RechteckTest {
    
    public static void main (String [] args){
        
        Punkt a = new Punkt (1,2);
        Punkt b = new Punkt (3,4);
        
        Rechteck (Punkt a.getX(), Punkt a.getY(), Punkt b.getX(), Punkt b.getY());
    }
}

Da gibt er mir schon eine kompilierungsfehler.... aber eigentlich übergebe ich doch hier nur die koorinaten der 2 Punkte... was ist dran falsch? ich habe auch schon versucht statt "Rechteck (Punkt a.getX(), Punkt a.getY(), Punkt b.getX(), Punkt b.getY());" "Rechteck (int a.getX(), int a.getY(), int b.getX(), int b.getY());" zu schreiben... ging auch nicht... wir kann ich denn die werte übergeben?! die sollen ja vom Typ Punkt sein!....
 
G

Guest

Gast
Ich hatte das vorher anders gelöst. da meinte aber ein Kollege das würde so nicht richtig sein.

Code:
class RechteckTest {
    
    public static void main (String [] args){
        
        Punkt a = new Punkt (1,2);
        Punkt b = new Punkt (3,4);
        int x1 = a.getX();
        int y1 = a.getY();
        int x2 = b.getX();
        int y2 = b.getY();
        
        Rechteck (int x1, int y1, int x2, int y2);
    }
}

Er meinte werden die 2 Objekte vom Typ Punkt nicht an den Konstruktor übergeben.....
 

Campino

Top Contributor
Seit ihr irre??

Also:

den Datentyp muss man nur angeben, wenn man die Methode dekliniert:

Code:
public void Rechteck(Punkt a, Punkt b){
    //Methodenkram
}

aufgerufen wird ds dann mit

Code:
Punkt a=new Punkt();
Punkt b=new Punkt();
Rechteck(a, b);

vielleicht solltet ihr mal ein Grundlagenbuch über Java lesen...
 
H

Hier

Gast
genau das hatte ich auch gedacht...


Code:
class RechteckTest {
    
    public static void main (String [] args){
        
        Punkt a = new Punkt (1,2);
        Punkt b = new Punkt (3,4);
        
        Rechteck r1 = new Rechteck (a, b);
        System.out.println(r1.berechneFlaeche());
    }
}


Code:
class Rechteck {

    
    int x1, y1; //Koordinaten des Punktes a
    int x2, y2; //Koordinaten des Punktes b
    int seiteA = Math.abs(x1-x2);
    int seiteB = Math.abs(y1-y2);
    
    public Rechteck(Punkt a, Punkt b){       // Konstruktor Rechteck
        int x1 = a.getX();
        int y1 = a.getY();
        int x2 = b.getX();
        int y2 = b.getY();
    }
    
    int berechneFlaeche(){
        int flaeche = (seiteA * seiteB);
        return flaeche;
    }
   
}


Komischerweise ist die ausgabe 0? wo liegt der fehler
 
B

Beni

Gast
Nicht nur das doppelt anlegen ist ein Problem, auch werden die Seiten berechnet, bevor der Konstruktor aufgerufen wird. Die "Math.abs" müssen im Konstruktor stehen, nachdem den x1, ... ihre Werte zugewiesen wurden.
 
H

Hier

Gast
Ich denke mal ich habe das relativ gut gelöst....

nur jetzt scheck ich das bei aufgaben teil b nicht?! wie kann man nur ein Rechteck übergeben und dann mit deinem anderen vergleichen?!

Zwischenstand:
Code:
class RechteckTest {
    
    public static void main (String [] args){
        
        Punkt a = new Punkt (6,2);
        Punkt b = new Punkt (3,9);
        
        Rechteck r1 = new Rechteck (a, b);
        r1.berechneFlaeche();
        r1.berechneUmfang();
        r1.kurzeSeite();
    }
}
Code:
class Rechteck {
    
    int x1, y1; //Koordinaten des Punktes a
    int x2, y2; //Koordinaten des Punktes b
    int seiteA, seiteB; //Seitenlaengen a und b
    
    public Rechteck(Punkt a, Punkt b){       // Konstruktor Rechteck
        this.x1 = a.getX();
        this.y1 = a.getY();
        this.x2 = b.getX();
        this.y2 = b.getY();
        this.seiteA = Math.abs(x1-x2); //Seitenlaenge a
        this.seiteB = Math.abs(y1-y2); //Seitenlaenge b
    }

    //Berechnung der Flaeche
    void berechneFlaeche(){
        int flaeche = (seiteA*seiteB);
        System.out.println ("Die Flaeche hat den Wert: " + flaeche);
    }
    
    //Berechnung des Umfangs
    void berechneUmfang(){
        int umfang = 2*(seiteA+seiteB);
        System.out.println ("Der Umfgang hat den Wert: " + umfang);
    }
    
    //Berechnung der kuerzeren Seite
    void kurzeSeite(){
        int kuerzer = (seiteA-seiteB);
        if (kuerzer == 0){
            System.out.println("Die Seiten sind gleich lang");
        }
        else{
            if (kuerzer > 0){
                System.out.println("Seite B ist die kuerzere Seite");
            }
            else{
                System.out.println("Seite A ist die kuerzere Seite");
            }
        }
    }
    
    
}
 
H

Hier!

Gast
Also die genaue aufgaben stellung lautete:

Erweitern Sie die Klasse aus a) um Methoden gleicherFlächeninhalt() und gleicherUmfang(), die, bei (einem!) übergebenen Rechteck genau dann true zurück geben, wenn der Flächeninhalt bzw. der Umfang der betrachteten Rechtecke gleich ist. Testen Sie das mit den Rechtecken a=5/b=5 und a=7/b=3 sowie a=3/b=8 und a=4/b=6.
 
H

Hier!

Gast
Weiss keiner wie das gehen soll?!

wenn ich nicht langsam erfahre wie das gemeint ist mit der Übergabe von einem Rechteck werd ich das bis morgen nie schaffen.

MfG
Ivo
 
B

Beni

Gast
Sowas in die Richtung:
Code:
public class Rechteck{
  public boolean gleicherInhalt( Rechteck other ){
     // da musst du halt die Methoden aufrufen
     return this.fläche == other.fläche;
  }
}
 
H

Hier!

Gast
Hmmm und wie bekomm ich other.flaeche!?!??!?


könntest du mir da ein kleines beispiel geben?! bzw einfach mal reinbauen in mein programm? ich versteh das irgendwie nicht.
 
G

Guest

Gast
ach gibt es other.xxxx als einfache anweisung, vordefiniert?!?! aber dann macht es mit der aufgabenstellung keinen sinn
 

Oni

Top Contributor
nein other = ein anderes rechteck.


in etwa so:
Code:
class RechteckTest {
   
    public static void main (String [] args){
       
        Punkt a = new Punkt (6,2);
        Punkt b = new Punkt (3,9);
       
        Rechteck r1 = new Rechteck (a, b);       
        
         Rechteck r2 = new Rechteck (a, b);

         if(r1.berechneFlaeche() == r2.berechneFlaeche()){
            System.out.println("Sind gleich...");
         }
    }
 
H

Hier!

Gast
aber dann werden doch 2 rechtecke übergeben... in der aufgabe steht aber dass nur eins übergeben werden soll
 

Soulfly

Bekanntes Mitglied
Man man, so nu schau!

Code:
public class Rechteck
{

 ...

    public boolean gleicherInhaltWie( Rechteck other )
    {
        // da musst du halt die Methoden aufrufen
        return this.berechneFläche() == other.berechneFläche();
    } 

}


Code:
public class Programm
{

 ...

   public static void main(String[] args)
  {
       Rechteck r1 = new Rechteck(blaPara);
       Rechteck r2 = new Rechteck(blaPara);

      if(r1.gleicherInhaltWie(r2))
          System.out.println("Inhalte sind gleich");
   }
}

Erklärung, obwohl selbsterklärend, wenn man eine OOP-Vorlesung mitgemacht hat.
Die Rechecke besitzen beide die Funktion berechneFläche(). Klar! "other" ist ein Rechteck,
das mit den aktuellen Rechteck, dessen Funktion aufgerufen wird, verglichen wird.
die Punkt-Notation (other.berechneFläche) bedeutet, dass du eine Funktion von dem Objekt aufrufst.

Das solls gewesen sein!

MfG
Soulfly
 
H

Hier!

Gast
Ich bin anscheinend schwer von Kape!? wie kommt ihr an das other?!

ich bin glaub ich zu dämlich zum studieren
 

Bastian

Bekanntes Mitglied
Hier! hat gesagt.:
Ich bin anscheinend schwer von Kape!? wie kommt ihr an das other?!

ich bin glaub ich zu dämlich zum studieren


Code:
public class Rechteck
{

...

    public boolean gleicherInhaltWie( Rechteck other )
    {
        // da musst du halt die Methoden aufrufen
        return this.berechneFläche() == other.berechneFläche();
    }

}

public boolean gleicherInhaltWie( Rechteck other ) <- da, in den klammern stehts drin.
rufst du diese methode auf übergibst du die werte halt auch in den klammern...... (so, jetzt absolut ohne fachbegriffe erklärt...)
 

Bastian

Bekanntes Mitglied
oder wer es etwas anders (und für manche evtl. verständlicher, da eingentlich keine vorraussetzungen, außer lesen zu können :D verlangt sind) erklärt haben möchte, kann sich hier ein handout zu einem vortrag laden, den ich mal gehalten habe:
http://bsc.bs.funpic.de/vortraege/
 
H

Hier!

Gast
hi,

kann mir jetzt noch einer verraten wie ich überprüfen kann ob sich die beiden quadrate schneiden!?!
 

KSG9|sebastian

Top Contributor
Oh..langsam reicht es, dir wurden schon ein paar Aufgaben komplett mit Code gelöst, jetzt ist es an der Zeit mal ein bissl selber nachzudenken.

So schwer wird das doch wohl net sein, sofern du in Mathe ab und an mal anwesend warst.

Zudem ist es imho quatsch, zu überprüfen, ob sich 2 Quadrate schneiden. Bei Geraden würde das Sinn machen, oder eben im 3D-Raum mit Ebenen...
 
H

Hier

Gast
Oh mister "ich muss mich aufspielen und bin pseudo wichtig".

Sorry musste ich mal loswerden. Entschuldige bitte dass ich nicht so ein Genie bin wie du... und btw. ich habs auch so gelöst. Achja und man sollte es einfach überprüfen (siehe aufgabe)!!!
 
H

Hier

Gast
Naja, und "ein paar aufgaben" ist ein wenig übertrieben... es war ziemlich genau eine...
 

Campino

Top Contributor
Hier: er hat aber ein bisschen recht..einige Deiner Fragen, der Fehler in denen Codes waren so Anfänger-like (<-sehr lieb ausgedrückt...) das ich mich frage ob du jemals in irgendeinem Buch über Java gelesen hast...
 
H

Hier

Gast
Ja hi,

sagen wir es mal so.. ich lerne java seid zwei/drei woche und bin in sowas nicht unbedingt begabt, gebe ich ja zu. Naja und das buch von BOL was ich mir bestellt habe war fehlgebunden und ich warte nun seid auf das erstatz exemplar.

daher meine "anfänger" fragen hier im forum.

Und ich bin nun mal anfänger und jeder anfang ist schwer!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben