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
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
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; }
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("Würzburger Hofbräu", "Würzburg", 0.5F),
new Bier("Becks", "Bremen", 0.33F),
new Bier("Paulaner", "München", 0.5F),
new Bier("Distelhäuser", "Distelhausen", 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("Unsortiert:");
System.out.println("-----------");
for (Bier bier : biere) { //Hier sagst du ihm er soll einfach alle Biere ausspucken
System.out.println(bier);
}
Arrays.sort(biere);
System.out.println("Sortiert:");
System.out.println("-----------");
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üsstest du die Klasse Comparator anlegen
~~~\n
public class BierNameComparator implements Comparator<Bier> {
@Override
public int compare(Bier b1, Bier b2) {
if (b1.getName() == null && 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 übergeordnet, 0 gleichwertig und 1 untergeordnet
Linus
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 !
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..
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ß 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ürde einfach nur eine Vektoraddition schreiben die quasi 2 mal aufgerufen wird. Einmal mit x Werten gefüttert, einmal mit y.
Lg Linus
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...
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?
Habs schon entdeckt, weiß nicht wirklich ganz, was bei mir das Problem war, aber es funktioniert jetzt, danke :)
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?
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.
Danke! So ein Blödsinn, das war ja bisher auch so oder nicht oO oder wo hätte man bisher die Werte eingeben sollen?^^
Lukas @LukasPraxmarer
Wirtschaftsingenieur... · Technische Universit...
Geht das eigentlich nur mir so, oder verstehn hier einige genauso nur Bahnhof bei solchen Codes?