Forum / Grundlagen des Programmierens / 2. Hausübung

2. Hausübung

Hallo Leute!

Hat sich von euch schon jemand die Bsp aus dem Rep angschaut??? Soweit ich weiß hat der Tutor gemeint dass er diese mit Kommentaren versieht um diese verständlicher zu machen, oder irre ich mich???

mfg

Lukas ±0

Geht das eigentlich nur mir so, oder verstehn hier einige genauso nur Bahnhof bei solchen Codes?

Linus ±0

Geht jeden so :P Musst dich für diese Hausübungen leider recht lang damit beschäftigen. Das ist eine Zeitaufwendige Sache. Um die Zweite HÜ machen zu können musst du dir das mal in den beiden Büchern durchlesen und dich dann spielen. http://www.javabuch.de/download.html ab Seite 171 http://openbook.galileocomputing.de/javainsel/ zum Nachschlagen was aus Buch eins noch nicht ganz klar war :P

Lukas ±0

http://www.java-blog-buch.de/d-objekte-sortieren-comparator-und-comparable/ Hier steht es ganz gut.

Wichtig ist, dass man eine "eigene" Vergleichsmethode schreibt (das ist das einzige "neue" an dem Bsp) um 2 Objekte zu vergleichen, da diese i.d.R. viele Eigenschaften und Methode besitzen können ist es schwierig hier ein Vergleichskriterium zu finden (bei primitiven Datentypen -->int,double,....etc....ist es einfacher zu vergleichen (entweder Zahl1 ist größer, kleiner oder gleich Zahl2) deshalb muss man diese compareTo Methode neu schreiben: Somit kann man 2 Objekte vergleichen (in diesem Fall anhand der Länge):

@ Override public int compareTo(Object j){ if(this.laenge() < ((Vektor3Dcomparable) j).laenge() ){return -1;} if(this.laenge() > ((Vektor3Dcomparable) j).laenge() ){return 1;} else return 0; }

Patrick ±0
 
import java.util.Arrays;
 
public class ArraysAndCollectionsTest {
 
  public static void main(String[] args) {
 
    int[] unsorted = { 5, 6, 1, 123, 543, 32, 53, 75, 8 };
    System.out.println(&quot;Unsortiert:&quot;);
    System.out.println(&quot;-----------&quot;);
    for (int i : unsorted) {
      System.out.println(i);
    }
    Arrays.sort(unsorted);
    System.out.println(&quot;Sortiert:&quot;);
    System.out.println(&quot;-----------&quot;);
    for (int i : unsorted) {
      System.out.println(i);
    }
  }
}\n~~~



Kann mir vielleicht jemand sagen was das f&uuml;r eine Art von for schleife ist?? &quot;for(int i : unsorted)&quot;
Linus ±0

Hallo!

Das Bsp das du von der Seite hast ist, das weches die Sortierfunktion finde ich am unanschaulichsten domonstriert :P

package de.jbb.cuc;
 
import java.util.Arrays;
 
public class ArraysAndCollectionsTest {
 
  public static void main(String[] args) {
 
    Bier[] biere = {
        new Bier(&quot;W&uuml;rzburger Hofbr&auml;u&quot;, &quot;W&uuml;rzburg&quot;, 0.5F),
        new Bier(&quot;Becks&quot;, &quot;Bremen&quot;, 0.33F),
        new Bier(&quot;Paulaner&quot;, &quot;M&uuml;nchen&quot;, 0.5F),
        new Bier(&quot;Distelh&auml;user&quot;, &quot;Distelhausen&quot;, 0.33F)
    };

// hier legst du die ganzen Biere an, Name als String, Herkunft als String und dann noch den Inhalt der Flasche


    System.out.println(&quot;Unsortiert:&quot;);
    System.out.println(&quot;-----------&quot;);
    for (Bier bier : biere) { //Hier sagst du ihm er soll einfach alle Biere ausspucken
      System.out.println(bier);
    }
    Arrays.sort(biere);
    System.out.println(&quot;Sortiert:&quot;);
    System.out.println(&quot;-----------&quot;);
    for (Bier bier : biere) {  //Hier sagst du ihm er soll alle Biere sortiert ausgeben. Wird zum fehler kommen da er keine Ahnung hat nach was
      System.out.println(bier);
    }
  }
}
\n~~~

Zum sortieren m&uuml;sstest du die Klasse Comparator anlegen

~~~\n
public class BierNameComparator implements Comparator&lt;Bier&gt; {
 
  @Override
  public int compare(Bier b1, Bier b2) {
    if (b1.getName() == null &amp;&amp; b2.getName() == null) {
      return 0;
    }
    if (b1.getName() == null) {
      return 1;
    }
    if (b2.getName() == null) {
      return -1;
    }
    return b1.getName().compareTo(b2.getName());
  }
}
\n~~~

Er vergleicht einfach die Namen der Biere b1,b2,b3. Bei -1 wird es &uuml;bergeordnet, 0 gleichwertig und 1 untergeordnet

Linus
Daniel ±0

Kann mir bitte einer folgenden Code-Ausschnitt (von Kiri) erklären? :)

    double x;
    double y;
}
   
    
public static void main(String[] args) {
    
    Vektor2D Vektor1; //Deklaration der Variable Vektor1
    Vektor1= new Vektor2D(); //Objekt wird erzeugt
    Vektor1.x=1; //Attribute werden erzeugt
    Vektor1.y=1; \n~~~

Danke im Voraus !
Dominik ±0

wie schafft ihr es,dass ihr beim 2, bsp bei der methoide für die vektoraddition 2 werte zuruckgeben könnt? es sollt ja funktionnieren, wenn man ein array erstellt und das returnen lässt, weil 2 double werte kann man ja nicht ausgeben lassen, mein ansatz wäre: ~~~\ndouble x1,x2,x3,y1,y2,y3; double Vektoradd[]={x1+x2+x3, y1+y2+y3};
return Vektoradd;\n~~~
aber iwie funktioniert das nicht und ich hab keinen plan warum..

Wolfgang ±0

edit: hat sich vorläufig mal erledigt, melde mich evtl. wieder :D

Linus ±0

Kann mir bitte einer folgenden Code-Ausschnitt (von Kiri) erklären? :)

    double x;
    double y;
}
   
    
public static void main(String[] args) {
    
    Vektor2D Vektor1; //Deklaration der Variable Vektor1
    Vektor1= new Vektor2D(); //Objekt wird erzeugt
    Vektor1.x=1; //Attribute werden erzeugt
    Vektor1.y=1; \n~~~

Danke im Voraus !

Das ist dein Vektor 2D mit seinen beiden Parametern x und y welche double sind.
~~~\n
static class Vektor2D{
    double x;
    double y;
}
\n~~~

Im zweiten Abschnitt erzeugst du einen Vektor eins welcher sozusagen die Eigenschaften der Klasse Vektor2D hat, er ist aber blo&szlig; ein Array.
~~~\n
public static void main(String[] args) {
    
    Vektor2D Vektor1; //Deklaration der Variable Vektor1
    Vektor1= new Vektor2D(); //Objekt wird erzeugt
    Vektor1.x=1; //Attribute werden erzeugt
    Vektor1.y=1; \n~~~

An Doku. Ich w&uuml;rde einfach nur eine Vektoraddition schreiben die quasi 2 mal aufgerufen wird. Einmal mit x Werten gef&uuml;ttert, einmal mit y.

Lg Linus
Kathrin ±0

Damit ist gemeint, dass man float Variablen nehmen soll.

Täusch ich mich oder heißt das nicht auch, dass man Variablen wie 2.5 oder ähnliche mit Gleitkomma auch verwenden können sollte? Das funktioniert nämlich bei mir nicht und ich hab auch hier keine noch keine Lösung dazu gefunden...

Linus ±0

Hallo!

Ich verstehe deine Frage nicht ganz :(

können alle nur ganze Zahlen speichern.

Wenn du jetzt aber gerne 2,4868 als [FONT=Courier New]y abspeichern willst müsstest du sagen float y = 2,4868; Double würde halt noch mehr "Speicherplatz" zur Verfügung stellen.

In Welcher Hinsicht funktioniert das bei dir nicht?

Kathrin ±0

Habs schon entdeckt, weiß nicht wirklich ganz, was bei mir das Problem war, aber es funktioniert jetzt, danke :)

Dieter ±0

Was genau meinen die mit "Die Eingabe erfolgt von der Befehlszeile."? Bzw was ist der Unterschied zu den Bsp bei denen sie das nicht extra dazugeschrieben haben? Muss man dann irgendetwas noch extra dazuprogrammieren damit das erfüllt ist? und mit Kantenlänge meinen die den Umfang und nicht die Länge der Seiten a und b wenn man nur den Flächeninhalt und das Seitenverhältnis gegeben hätte?

Andreas ±0

Was genau meinen die mit "Die Eingabe erfolgt von der Befehlszeile."? Bzw was ist der Unterschied zu den Bsp bei denen sie das nicht extra dazugeschrieben haben? Muss man dann irgendetwas noch extra dazuprogrammieren damit das erfüllt ist?

Damit ist die Eingabe über die Netbeans Konsole gemeint und nein es gibt dabei keinen Unterschied.

Also, wenn du einen Run von deinem Programm machst, dann zeigt dir Netbeans ein Output Fenster an, wo du die Abfragen eingeben kannst.

Dieter ±0

Danke! So ein Blödsinn, das war ja bisher auch so oder nicht oO oder wo hätte man bisher die Werte eingeben sollen?^^

Sorry, die Kommentarfunktion ist geschlossen.