+ Antworten
Ergebnis 1 bis 17 von 17

Benötige Hilfe für Java

Eine Diskussion über Benötige Hilfe für Java im Forum Technik Ecke. Teil des Off Topic-Bereichs; Kennt sich denn hier im Forum jemand etwas besser mit Java aus? Und wenn ja, hätte derjenige Lust sich mit ...

  1. #1
    Robin Hood
    Avatar von RaoulDuke
    Registriert seit
    10.12.2006
    Ort
    Monaco di Bavaria
    Alter
    34
    Beiträge
    3.778
    Nick
    MeinAnwalt
    Clans
    !BAMM!

    Benötige Hilfe für Java

    Kennt sich denn hier im Forum jemand etwas besser mit Java aus? Und wenn ja, hätte derjenige Lust sich mit ein paar Fragen von mir löchern zu lassen, im UF-Teamspeak am besten. Es geht um Klassen, Objekte und Methoden
    Geändert von RaoulDuke (18.09.2007 um 05:04 Uhr)
    Cause I'm a picker
    I'm a grinner
    I'm a lover
    And I'm a sinner
    I play my music in the sun

  2. #2
    UF Supporter
    Avatar von BseBear
    Registriert seit
    27.09.2003
    Ort
    Stuttgart
    Alter
    31
    Beiträge
    3.945
    Name
    Michael
    Nick
    bsebear
    wenns hier auch geht, schieß los

  3. #3
    Robin Hood
    Avatar von RaoulDuke
    Registriert seit
    10.12.2006
    Ort
    Monaco di Bavaria
    Alter
    34
    Beiträge
    3.778
    Nick
    MeinAnwalt
    Clans
    !BAMM!
    Danke, schonmal. Ich hoffe das geht hier auch. Also erstmal so ne kleine Frage, was macht den unterschied wenn man static vor eine methodendefinition schreibt?
    Und das 2. ist bißchen umständlich. Wir benutzen BlueJ. Und ich check nicht so ganz die Ein- und Ausgabe-Befehle. Z.B. system.out.print funktioniert immer nur wenn, neben der Klasse die das eigentliche Programm enthält noch, ne KLasse dabei ist die "Console" genannt wird. Allerdings steht da dann "No Source" dabei und ich kann es nicht öffnen. Wenn ich so drauflos system.out.println mache kommt package not found.
    Das hat immer bei den vorgefertigten Programmen geklappt aber wie mache ich wenn ich selber ganz neu anfange und Ein- und Ausgabe selber schreiben will? Hier kannst du mal gucken wie das so auchschaut, ist ein Bubbel-Sort-Algorithmus
    Geändert von RaoulDuke (18.09.2007 um 18:58 Uhr)
    Cause I'm a picker
    I'm a grinner
    I'm a lover
    And I'm a sinner
    I play my music in the sun

  4. #4
    UF Supporter
    Avatar von BseBear
    Registriert seit
    27.09.2003
    Ort
    Stuttgart
    Alter
    31
    Beiträge
    3.945
    Name
    Michael
    Nick
    bsebear
    Sobald du "static" vor eine Methode oder ein Attribut schreibst, bindest du diese Methode an die Klasse und nicht an die Objekte. D.h. du kannst die Methoden nutzen ohne eine Instanz der Klasse erzeugen zu müssen. (Prominentes Beispiel: Die Math Klasse)
    Kennzeichnest du Attribute mit "static" referenzieren ALLE instanzierten Objekte dieser Klasse die gleiche Speicheradresse. Die Variable ist also nur einmal vorhanden und sobald du sie in einem Objekt änderst, änderst du sie überall.

    2. Ich kenne BlueJ nicht, hab grade nur durch googeln rausgefunden, dass es ne IDE ist... Die perfekte IDE für Java ist mMn Eclipse. Bietet alles was ein moderner Editor bieten muss, hat einen sehr guten Debug-Modus und lässt sich durch Plugins auch immer sehr gut erweitern.

    Kannst du dein Programm denn über die Konsole ausführen? Also run-->cmd-->javac blabla.java . Dann ist dein Code compiliert und er liegt als .class file vor, welches du per java blabla.class über die Konsole ausführen kannst.

    Mh Auf Groß-Kleinschreibung geachtet?

  5. #5
    Robin Hood
    Avatar von RaoulDuke
    Registriert seit
    10.12.2006
    Ort
    Monaco di Bavaria
    Alter
    34
    Beiträge
    3.778
    Nick
    MeinAnwalt
    Clans
    !BAMM!
    Danke dir für deine Mühe. Ersteres verstehe ich jetzt. Zu 2. ja es ist compiliert bzw. liegt als .class vor aber wenn ich sie ausführen will, kommt"Exception in thread "main" java.lang.noclassdefFoundError". Aber erklär mir vielleicht nur wie ich ne Eingabe einlesen kann. Das mit der Ausgabe lag wirklich an der Groß/Kleinschreibung :-)
    Weil in dem Fall mit Console wird das in der anderen Klasse so gemacht: "Console.readInt...." deswegen wollte ich gucken was denn in der Console-Klasse unter der Methode readint steht aber wie gesagt leider kommt wenn ich mir denn Quellcode anschauen weil No Source found.
    Geändert von RaoulDuke (19.09.2007 um 05:01 Uhr)
    Cause I'm a picker
    I'm a grinner
    I'm a lover
    And I'm a sinner
    I play my music in the sun

  6. #6
    UF Supporter
    Avatar von BseBear
    Registriert seit
    27.09.2003
    Ort
    Stuttgart
    Alter
    31
    Beiträge
    3.945
    Name
    Michael
    Nick
    bsebear
    Okey wenn dann ein "noclassdefFoundError" kommt, solltest du mal prüfen ob deine Klasse so heißt wie die Java Datei. Also Klasse "Test" und das File muss dann "Test.java" heißen.

    Dass da "NoSource Found" kommt, liegt daran, dass wahrscheinlich in dem jar, das du einbindest, nur die .class Dateien enthalten sind und nicht die .java Dateien, die für dich lesbaren Code beinhalten.

    Hab mal noch ein kleines Beispiel für ne Standardkonsoleneingabe:

    import java.io.*;

    public class Eingabe1{

    public static void main(String[] args){

    try {

    int val = System.in.read();
    char c = (char) val;
    System.out.println("Eingabe als int:" + val);
    System.out.println("Eingabe als char:" + c);
    }
    catch (IOException ioe) {
    System.out.println("Habe gefangen: "+ ioe);
    }
    }
    }

  7. #7
    Robin Hood
    Avatar von RaoulDuke
    Registriert seit
    10.12.2006
    Ort
    Monaco di Bavaria
    Alter
    34
    Beiträge
    3.778
    Nick
    MeinAnwalt
    Clans
    !BAMM!
    Ah, coole Sache die Befehle try und catch werden netterweiße in unserem Script nicht erwähnt.
    Nu hab ich noch ein kleines Problem. Wir haben folgendes Programm um eingabe von Namen zu prüfen ob sie ordnungsgemäß sind.

    public class CustomerNames
    {
    public void main ()
    {
    System.out.println ("Bitte Namen eingeben");
    };
    public boolean checkName(String name)
    {
    boolean yes;
    if (yes = !isEmptyString(name) && firstIsChar(name) && restIsNameChar(name))
    {
    printName (name);
    return true;
    } else
    {
    System.out.println("Illegal name!");
    return false;
    }
    }

    public void printName(String name)
    {
    System.out.print(name.substring(0,1).
    toUpperCase());
    System.out.println(name.
    substring(1,name.length()).toLowerCase());
    }

    private boolean isLetter(char c)
    {
    return ((int) c > 64 && (int) c < 91) ||
    ((int) c > 96) && ((int) c < 123);
    }

    private boolean isNameChar(char c)
    {
    return isLetter(c) || isSpace(c) || isHypen(c);
    }

    private boolean isHypen(char c)
    {
    return (int) c == 45;
    }

    private boolean isSpace(char c)
    {
    return (int) c == 32;
    }

    private boolean isEmptyString(String name)
    {
    return name.length() == 0;
    }

    private boolean firstIsChar(String name)
    {
    return isLetter(name.charAt(0));
    }

    private boolean restIsNameChar(String name)
    {
    boolean yes = true;
    for (int i = 1; i< name.length(); i++)
    {
    if (!isNameChar(name.charAt(i)))
    {
    yes = false;
    break;
    };
    }
    return yes;
    }
    }



    WAs ich daran nicht check sind diese Anweisungen (s.u.). Ich mein der Typ der Methode ist doch Boolean. Was wird dann da jeweils returned? Weil da steht ja zum Bsp. return (int) c==45; Das das umgerechnet wird von char in int versteh ich, aber ich versteh nicht wie das ohne Verzweigungsanweisung geschehen kann, weil ein Wort kann ja auch ohne Leerzeichen oder Bindestrich sein. Und wird da ein Ausdruck vom Typ Boolean zurückgesandt? Ist die Anweisung nach return die Bedingung?

    private boolean isNameChar(char c)
    {
    return isLetter(c) || isSpace(c) || isHypen(c);
    }

    private boolean isHypen(char c)
    {
    return (int) c == 45;
    }

    private boolean isSpace(char c)
    {
    return (int) c == 32;
    }

    private boolean isEmptyString(String name)
    {
    return name.length() == 0;
    }

    private boolean firstIsChar(String name)
    {
    return isLetter(name.charAt(0));
    }
    Geändert von RaoulDuke (19.09.2007 um 18:07 Uhr)
    Cause I'm a picker
    I'm a grinner
    I'm a lover
    And I'm a sinner
    I play my music in the sun

  8. #8
    UF Supporter
    Avatar von BseBear
    Registriert seit
    27.09.2003
    Ort
    Stuttgart
    Alter
    31
    Beiträge
    3.945
    Name
    Michael
    Nick
    bsebear
    Da werden einfach die ASCI Werte verglichen, deshalb wird der Character "c" immer in einen int gecastet. In dem int steht dann der ASCI Wert des Buchstabens als Zahl und dieser wird mit den unerwünschten Zeichen verglichen.

    Ich glaub du hast übersehen, dass da immer c==32 steht, was ja ein Vergleich ist. Und das Ergebnis dieses Vergleiches wird dann returned und ein Vergleich kann ja nur wahr oder falsch sein, also liefert die Methode einen boolschen Wert zurück.

    btw boolsche Werte würd ich nicht immer "yes" nennen, sonst fragst dich nur später, was denn jetzt hier "yes" sein soll. Bei der ersten if-Abfrage könntest das yes auch ganz weglassern und nur die Bedingungen reinschreiben.

  9. #9
    Robin Hood
    Avatar von RaoulDuke
    Registriert seit
    10.12.2006
    Ort
    Monaco di Bavaria
    Alter
    34
    Beiträge
    3.778
    Nick
    MeinAnwalt
    Clans
    !BAMM!
    Jetzt checks auch ich. Danke dir vielamls wenn ich noch ein zwei fragen habe kann ich dich dann nochmal belästigen?
    Cause I'm a picker
    I'm a grinner
    I'm a lover
    And I'm a sinner
    I play my music in the sun

  10. #10
    UF Supporter
    Avatar von BseBear
    Registriert seit
    27.09.2003
    Ort
    Stuttgart
    Alter
    31
    Beiträge
    3.945
    Name
    Michael
    Nick
    bsebear
    Ja klar Hast grade das Glück dass ich zur Zeit find drin bin weil ich am Montag Assistentenprüfung hab^^ Müsste also auch komplexe Fragen beantworten können

  11. #11
    Robin Hood
    Avatar von RaoulDuke
    Registriert seit
    10.12.2006
    Ort
    Monaco di Bavaria
    Alter
    34
    Beiträge
    3.778
    Nick
    MeinAnwalt
    Clans
    !BAMM!
    Da hab ich dann wirklich glück. Ich hab am Dienstag Prüfung aber alzu komplex wirds nicht werden. Muss mir das nur selbst erarbeiten und is ein bissel mühselig da das skript nicht so der Renner ist. aber hab schon die nächste Frage. Hoffe es ist dir nicht zu lang, wenn doch sags einfach. Geht um Listen. Die Kommentare schreib ich dazu ob das richtig so ist wie ich das denke oder was ich nicht verstehe und die NUmmer gibt die Frage an:


    Edit: seh grad das es bissel unübersichtlich wird durch das forum hab es mal als worddoc angefügt

    public class List
    {
    //1. Also das sind die Klassenvariablen, aber was ist das für ein Typ "List" kannte bisher
    // nur primitive Variablentypen wie int, string..... und so was wird dann mit next
    // bezweckt? Bin v.a. verwirrt weil im Skript wird das ListNode genannt und in der
    //runterladbaren Version nur list

    private int element;
    private List next;

    /**
    * 2. Das ist der Standardkonstruktor aber gleich gibts ja noch einen wieso?
    **/
    public List()
    {
    // initialise instance variables
    element = 0;
    next = null;
    }

    /**
    * 2.Der Konstruktor mit Parametern, wie gesagt warum zwei?
    **/
    public List(int elem, List nextElem)
    {
    element = elem;
    next = nextElem;
    }

    /**
    * Methode um einen Listeneintrag anzuwählen?
    **/
    public void setElem(int someElement)
    {
    element = someElement;
    }

    /**
    * 3. hier wird jetzt der Parameter newNext vom Typ List (was ist denn der Typ List)
    // übergeben, was passiert dann?
    **/
    public void setNext(List newNext)
    {
    next = newNext;
    }

    /**
    * Methode zum auslesen nehm ich an
    **/
    public int getElem()
    {
    return element;
    }

    /**
    * 4. wieder List? ist nehm ich mal an dazu da um den nächsten Eintarg zu holen
    **/
    public List getNext()
    {
    return next;
    }
    }

    In dem Projekt gibts noch ne KLasse um eine Verkette Liste aufzubauen. DA blick ich zum Teil noch gar nicht durch. Das sind übrigens fertige Projekte von dem Skript also wenn sie blöd sind kann ich nix für;-)


    Public class LinkedList
    {
    private List head; // Klassenvariablenvom Typ List wie oben keine Ahnung was das ist
    private List tail; //

    public LinkedList () // Konstruktor ohne Prameter
    {
    head = null;
    tail = null;
    }

    public List getHead() // Methode um den "Head zu bekommen"
    { return head;}

    public List getTail () // dito, bloß tail halt
    {
    return tail;
    }

    public List buildList (int [] entries) // 5. hier wirds kritisch bei mir, also hier wird eine
    //Methode eingeführt an die man ein Feld vom Typ int mit
    // dem Namen entries übergeben kann
    {
    if (entries.length > 0) // is logisch wird nur bearbeitet wenn Feld überhaupt etwas enthält
    {
    tail = new List (entries [0], null); // 6. hier wird tail was zugewiesen? Der Konstruktor von
    //vorher mit den Parametern Erstes Feld und null??
    head=tail; //Jetzt hat head die KOnstruktorWerte bekommen?
    List ln; // 7. Hier wird ne Variable eingeführt vom Typ List. Ist das
    //eine Methodenvariable oder kann die auch von den
    //anderen Methoden benutzt werden?
    for (int i= 1; i < entries.length; i++)
    {
    ln = new List (entries[i], head); // 8. ln bekommt den List Konstruktor mit Feldelement i und
    //head, aber was ist den Head ist doch "null"
    head = ln; // jetzt wird head ln zugewiesen
    }
    }
    return head; // head wird zurückgegeben
    }


    public void printList () // 9. Diese Methode ruft die Methode prinListNodes.... mit dem
    //Parameter head auf aber warum macht man unten nicht gleich
    //die printListNoesStartingWith gleich public und spart sich die Methode
    {
    printListNodesStartingWith (head);
    }

    private void printListNodesStartingWith (List ln)
    {
    printNode (ln); // methode printnode wird aufgerufen mit parameter ln
    if (ln.getNext () != null) //10. wenn der zurückgegebene Wert von get next ungleich null ist
    // gehts los denk ich mir, ln.getnext damit der der nächste
    //listeneintrag von ln aufgerufen wird? ZUmal bei der Methode
    // getnext kein Parameter definiert ist. was bewirkt der aufruf
    //ln.getnext?
    {
    System.out.print ("->");
    printListNodesStartingWith (ln.getNext())); // is klar wieder methode printNodesStar... mit
    // dem Parameter ln.getnext, der rest ist mir klar
    } else
    {
    System.out.println ("");
    }

    private void PrintNode (List ln)
    {
    System.out.print (ln.getEntry());
    }
    }
    Angehängte Dateien Angehängte Dateien
    Geändert von RaoulDuke (20.09.2007 um 23:25 Uhr)
    Cause I'm a picker
    I'm a grinner
    I'm a lover
    And I'm a sinner
    I play my music in the sun

  12. #12
    UF Supporter
    Avatar von BseBear
    Registriert seit
    27.09.2003
    Ort
    Stuttgart
    Alter
    31
    Beiträge
    3.945
    Name
    Michael
    Nick
    bsebear
    Aaaaaaalso

    Eigentlich werden hier umständlich in C beliebte verkettet Listen in Java realisiert. Die brauch aber kein Mensch weils genug Klassen gibt, die man für sowas verwenden kann aber wie du schon sagtest, es is ja ein Beispiel und nicht von dir

    So die erste Klasse "List" definiert soweit ich das verstanden hab ein Listenelement. Die int Variable "element" ist dabei der Wert des Elementes und das Attribut "next" ist ebenfalls vom gerade definierten Typ "List" und beinhaltet das nächste Element innerhalb der Liste.

    2 versch. Konstruktoren machen Sinn wenn es die Möglichkeit gibt, sie mit versch. Parametern aufzurufen. Der Defaultkonstruktor initialisiert hier nur die Werte und setzt "next" auf null, wohingegen der andere Konstruktor bereits Werte in die privaten Variablen speichert. Der Compiler entscheidet immer anhand der übergebenen Parameter welcher Konstruktor aufgerufen wird.

    3. Ist die Methode um dem aktuellen Listeninhaltsobjekt (Objekt der Klasse List) einen integer Wert zuzuweisen, der dann in "element" gespeichert wird.

    4. richtig. Die Methode liefert den nächsten Listeneintrag zurück.

    Die 2. Klasse deutet für mich eher auf ne Queue hin, denn mit der ersten lassen sich schon verkettete Listen realisieren oO naja.

    5.6.7.8. die Methode bastelt dir aus dem übergebenen Array ne Liste
    Wenn das Array Daten enthält wird der erste Wert dem "Tail" zugewiesen. Dabei wird der vorher definierte zweite Konstruktor der Klasse "List" benutzt. Es wird also ein neues Listenelement erzeugt, das den Wert an der Stelle 0 des Arrays bekommt.

    Anschließend wird head tail zugewiesen, da es ja sein kann, dass das Array nur eine Integer Zahl beinhaltet, wodurch die Liste nur ein element besitzt, welches head und tail gleichzeitig ist.

    Die jetzt eingeführte list variable ist nur innerhalb der Methode verfügbar.

    Nun kommt eine Schleife, die die restlichen Inhalte des int-Arrays in Listenobjekte umwandeln. Zum Abschluss der Schleife wird jedesmal das aktuelle Listenobjekt der Variable "head" zugewiesen, um die Verkettung im nächsten Durchlauf der Schleife sicherstellen zu können "ln = new List (entries[i], head);". Der 2. Parameter dieses Konstruktors war ja das nächste Element, welches in jedem Fall der Schleife das im vorherigen Durchlauf erzeugte Objekt ist (deshalb am Anfang auch head = tail, damit das neu erstellte Objekt auf das 1. zeigen kann). Dadurch wird die Verkettung innerhalb der Liste erreicht.

    Zum Schluss wird "head" zurückgeliefert und man bekommt damit das Listenobjekt, das am Anfang steht und kann über die "next" Variablen auf die nächsten Elemente zugreifen.

    9. jop könnt man auch anders machen. So wird halt sichergestellt, dass äußere Klassen nicht festelgen können mit welcher Liste die Ausgabe begonnen werden soll.Das kann nur innerhalb der private Methode die Klasse selbst definieren.

    10. jap. Wenn getNext(), was auch in der List Klasse definiert ist, etwas enthält, also ungleich null ist, gehts los. getNext() greift nun einfach auf die private "next" Variable des Listenobjekts zu und liefert das nächste Objekt zurück, dessen Wert nun ausgegeben werden kann. Ohne zusätzliche Schleife wird hier jedoch nur immer das übergebene und das nächste Listenelement ausgegeben.

    Ich hoff es war einigermaßen verständlich, wenn nicht, frag ruhig nach

  13. #13
    Stabsgefreiter
    Avatar von lulin
    Registriert seit
    28.11.2005
    Ort
    R'lyeh
    Beiträge
    472
    Ich möchte ja jetzt nicht frech sein und weder den Wissensdurst des Einen noch die sehr guten Erklärungen des Anderen schlecht machen, aber solltest du dir nicht mal ein Java-Buch anschauen/anschaffen? Die Fragen sind ja wirklich Grundlagen, die man sich halt mal aneignen muss. Java ist eine Insel gibt's ja zum Beispiel auch im Netz (obwohl das nicht so super ist, aber für solche Grundlagen mehr als geeignet).
    a^n + b^n = c^n hat keine ganzzahligen Lösungen für n > 2! Ich habe einen wahrhaft wundervollen Beweis dafür gefunden, aber leider ist das Signaturfeld zu klein um ihn aufzuschreiben.

  14. #14
    Robin Hood
    Avatar von RaoulDuke
    Registriert seit
    10.12.2006
    Ort
    Monaco di Bavaria
    Alter
    34
    Beiträge
    3.778
    Nick
    MeinAnwalt
    Clans
    !BAMM!
    Danke für den Rat lulin, wie ich oben schon erwähnt habe habe ich ein Skript leider ist das nicht das Beste. Und die Grundlagen die man sich aneignen muss, versuche ich mir grade anzueignen. Dazu kann man auch fragen haben und da ein Buch nicht spricht hab ich hier gefragt. und ich muss mich an diesem Skript orientieren weil die Prüfung wird es auch tun. Aber wenn die Prüfung vorbei ist, würde ich mich schon noch gerne mehr mit java beschäftigen, also gib mal einen guten Buchtip wenn "Java ist auch eine Insel" nicht so gut ist.
    Nu gut zurück zur Sache.

    Ich versuche es mal mit eigenen Worten wiederzugeben ob ich das richtig verstanden habe. Weil ich hab das jetzt erst begriffen das List quasi eine Objektvariable ist. Was in meinem Skript in zwei Seiten behandelt wird, während man sich dem public, private Sachverhalt 10 Seiten lang gewidmet hat.
    Is jetzt nicht unbedingt fachjargon aber ich versuchs mal. Kann sein das ich die begriffe durcheinanderbringe
    Zur 1. Klasse :
    Also die List-Variable ist keine Datenvariable sondern ein Verweis auf ein Preudo-Objekt (ich nenn das mal so) das mit Hilfe des Standardkonstruktors initialisiert wurde und dem dann über den 2. Konstruktor Variablen übergeben werden um ein neues Pseudo-objekt zu erzeugen. Da der konstruktor abermal eine Verweisvariable hat, erzeugt das die Verkettung. Richtig gedacht soweit?
    Zur 2. Klasse: Die Methode buildList erzeugt erst das ende den tail mit den erstem wert und dem objekt-wert null weil es keinen weiteren verweis mehr am ende gibt. dann übergibt man diesen objekt-zustand an head.
    Nun beginnt die Schleife wo ich auch noch ne Frage habe. Also es wird ein Pseudo-objekt
    eingeführt das nl heißt. das objekt hat den zustand element = entries [i], und den verweis next = head also das vorhergehende objekt mit dem zustand entries [0] und next = null, bekommen. Nun bekommt Head den Zustand von ln und es geht von vorne los. Was ich nicht verstehe der zustand aller erzeugten Preudo-Objekte ist ja bis auf Ausnahme von Tale immer entries [i] und head. Somit zieht sich head quasi durch alle objekte bis hin zur null. Aber head wird ja immer wieder überschrieben mit ln also müsste head doch immer den Zustand haben den es zuletzt bekommen hat. Wie kann man sich jetzt mit Hilfe dieses Verweises durch die Liste hangeln?
    Naja, returned wird head was der verweis auf den letzten Zustand ist der zugefügft wurde also element = entries [entries.length] und next = head, und der verweis bringt doch dann nichts wenn man das sag ich mal hinterher anschauen würde weil head ja nur den letzten zustand hat? Aber ich glaub ich check das gedanklich noch nicht so ganz.
    Auf jeden Fall check ich jetzt das der Ausdruck ln.getElements () eine nachricht an das Pseudoobjekt ln ist auf sich selbst getElements anzuwenden bzw. getelements auf ln auszuüben. man kann das deswegen weil, obwohl es eine Methodenvariable ist, sie public ist.
    Hab ich das ungefähr richtig begriffen? Bitte sag ja ;-)
    Geändert von RaoulDuke (21.09.2007 um 05:35 Uhr)
    Cause I'm a picker
    I'm a grinner
    I'm a lover
    And I'm a sinner
    I play my music in the sun

  15. #15
    Stabsgefreiter
    Avatar von lulin
    Registriert seit
    28.11.2005
    Ort
    R'lyeh
    Beiträge
    472
    Gutes Buch... naja. Ich kenne nur wenige Java-Bücher, aber "Java ist auch eine Insel" tut es für den Anfang schon. Die Liste scheinst du ja größtenteils verstanden zu haben, aber warum "Pseudo"-Objekt? Das sind schon richtige, echte Objekte, die du da erstellst. (Hier ein dreifacher Fluch auf Java, dass es Datentypen gibt die keine Objekte sind).
    a^n + b^n = c^n hat keine ganzzahligen Lösungen für n > 2! Ich habe einen wahrhaft wundervollen Beweis dafür gefunden, aber leider ist das Signaturfeld zu klein um ihn aufzuschreiben.

  16. #16
    UF Supporter
    Avatar von BseBear
    Registriert seit
    27.09.2003
    Ort
    Stuttgart
    Alter
    31
    Beiträge
    3.945
    Name
    Michael
    Nick
    bsebear
    hehe ja das einzige an Java was nicht komplett oo ist^^

    Ich hab hier noch "Handbuch der Java Programmierung" von Guido Kruiger, das vom Umfang her aber deutlich mehr als ein Handbuch ist^^ Hat mich aber auch 60€ gekostet und kurz danach hab ich festgestellt, dass es das auch im Netz als online-book gibt.

    Ja also Pseudo-Objekte gibts schonmal nicht. Innerhalb eines Listenobjektes wird eben noch ein Listenobjekt gespeichert, was einfach das folgende Listenobjekt ist. So wird die Verkettung realisiert, da es in Java ja keine Pointer in dem Sinn gibt (Was gar nicht so schlecht is )

    Bei der Listenerzeugung wird ja bei jedem Durchlauf "ln" neu erzeugt, weshalb head dann später auch immer ein anderes Listenobjekt zugewiesen bekommt.

    ln = new List (entries[i], head)

    Dieser Befehl bewirkt die Verkettung. Das aktuelle Objekt "ln" bekommt entires[i] als Wert und head, was 1-2 Zeilen vorher oder im vorherigen Schleifendurchlauf gefüllt wurde, als nächstes Listenelement übergebene. Da "ln" jetzt auf "head" als nächstes Objekt zeigt und somit ganz am Anfang der Liste steht, muss man head jetzt noch auf ln setzen.

    Weiß nicht ganz ob du das jetzt auch vielleicht mit Call by Reference verwechselst. Wenn man das head auf ln setzt, bedeutet das nicht, dass das vorher übergebene Element nun auch ln ist. Das bleibt weiterhin auf dem Wert, den head zu der Zeit hatte.

    Ja das 3. hast soweit verstanden, nur gibts halt kein Pseudoobjekt und da wird auch keine methodenvariable benutzt sondern einfach eine Methode des Objekts

    edit: Hier noch was zur Parameterübergabe an Methoden. Wird beschrieben, dass immer nur Kopien von Objekten/Variablen an Methoden (also Call by Value) übergeben werden

    http://www.math.uni-bayreuth.de/~rba...ml/node76.html
    Geändert von BseBear (21.09.2007 um 18:11 Uhr)

  17. #17
    Robin Hood
    Avatar von RaoulDuke
    Registriert seit
    10.12.2006
    Ort
    Monaco di Bavaria
    Alter
    34
    Beiträge
    3.778
    Nick
    MeinAnwalt
    Clans
    !BAMM!
    Also ich glaub ich habs soweit verstanden. Müsst ihr ein bißchen Nachsicht üben, wenn ich schwer von Begriff bin, is ja die erste Woche in Java. Muss jetzt mal noch ein paar Klausuren durchrechnen. Danke vielmals schonmal und wenn ich noch ne Frage habe weiß ich ja wo
    Geändert von RaoulDuke (23.09.2007 um 04:18 Uhr)
    Cause I'm a picker
    I'm a grinner
    I'm a lover
    And I'm a sinner
    I play my music in the sun

+ Antworten

Ähnliche Themen

  1. Hilfe für dumme wie ich
    Von RiSk im Forum Generals
    Antworten: 4
    Letzter Beitrag: 18.02.2003, 22:48
  2. brauche hilfe für das forum !!!
    Von Maggy im Forum ...:::SoDsW:::...
    Antworten: 6
    Letzter Beitrag: 21.01.2003, 17:18
  3. Hilfe für netzwerk
    Von Bergparty im Forum Technik Ecke
    Antworten: 7
    Letzter Beitrag: 29.12.2002, 06:04
  4. Hilfe für netzwerk
    Von Bergparty im Forum United Talk
    Antworten: 4
    Letzter Beitrag: 28.12.2002, 14:49
  5. Hilfe für eure Homepage
    Von kheta im Forum Technik Ecke
    Antworten: 2
    Letzter Beitrag: 26.11.2001, 22:22

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •