Forum / Grundlagen des Programmierens / 3. Hausübung

Martin ±0

hat wer eine idee, oder kann mir jemand sagen wo ich über exceptions lesen kann?? hab nicht vestanden welche wir z.b bei der 1. aufgabe benutzen sollen

Andreas +7

hier is die lösung viel spaß!

Clemens ±0

hier is die lösung viel spaß! input == "m" funktioniert nicht, da Strings per "==" nur die Adresse vergleichen und nicht den Inhalt.

Täusch ich mich oder hast du keine Zugriffsspezifizierer?

Barbara ±0

Wie gibt man den Dateipfad an (bei Windows)? Und muss ich vorher ein File anlegen? Bekomme immer eine FileNotFoundException.

Lg Babsi

Claudia ±0
Gerhard ±0

Beim 1er Beispiel kann man das Werfen der Exception z.b. mit einem SwitchCase lösen...das funktioniert bei mir eigentlich ganz gut! :-)

Bruno ±0

also ich habe ein "kleines" problem,

meine Klassen sind so geschrieben das wenn ein Linienzug objekt erstellt wird automatisch eine arraylist für die Linien darin angelegt wird (über Konstruktor) und sobald eine neue Linie in diese hinzugefügt wird werden über den konstruktor der Linie automatisch zwei Objekte Punkt erstellt (anfangs und endpunkt, ja ich weis das dadurch jeder punkt außer erster und letzter doppelt vorhanden sind, aber das werde ich noch irgendwie lösen ;-))

wenn ich jetzt im ersten Objekt Linienzug in der Arraylist Linienzugliste eine neue neue linie hinzufügen will dann sollte das doch über

Linienzugliste[0].Linienliste.add(new Linie(int, int, int, int))

funktionieren oder wie kann ich einzelne objekte in der liste ansprechen?

Clemens ±0

Linienzugliste[0].Linienliste.add(new Linie(int, int, int, int))

funktionieren oder wie kann ich einzelne objekte in der liste ansprechen? Was ist Linienzugliste? Ein Array? Wenn ja was für eins?

Bruno ±0

Ich denke ich weis wo mein fehler ist

Linienzugliste ist eine Arraylist und wie ichd as so sehe kann ich in einer arraylist nur adden oder rauslöschen aber nicht direkt drin bearbeiten wie bei einem array

also muss ich vorher ein "dummy" objekt von Linienzug erstellen und befüllen das ich nacher zur Liste adden kann

neues problem an dem ich mir den kopf zerbreche:

String[] temp = sc.next().split(":");

        Linienzug l = new Linienzug();
        //Linien werden erstellt im Linienzug
        for(int i=0;i<temp.length-2;i=i+2){
            System.out.println("arraylänge:" + temp.length);
            System.out.println(temp[i]);
            System.out.println(temp[i+1]);
            System.out.println(temp[i+2]);
            System.out.println(temp[i+3]);
            System.out.println(Integer.parseInt(temp[i]));
            System.out.println(Integer.parseInt(temp[i+1]));
            System.out.println(Integer.parseInt(temp[i+2]));
            System.out.println(Integer.parseInt(temp[i+3]));
            l.Linienliste.add(new Linie(Integer.parseInt(temp[i]), Integer.parseInt(temp[i+1]), Integer.parseInt(temp[i+2]), Integer.parseInt(temp[i+3])));
        }

Bei diesem codefragment wirft er mir ab der vorletzten zeile also bei Integer.parseInt(temp[i+3]) eine NumberFormatException aus, und ich komme nicht drauf warum, bei allen anderen zeilen gehts aber bei i+3 nicht mehr, wenn ich nur die strings ausgeben lasse läuft alles und da ist die letzte zahl 234, ich bin schwerstens am verzweifeln!!!!! es müsste eigentlich laufen!!!!

EDIT: kann es sein das da am ende des letzten eintrages noch ein return hinten dran ist und der parseint nicht damit klar kommt?? ich habe nur leider keine ahnung wie ich das da weg bekomme

Bruno ±0

doppelpost sorry mein browser spinnt hier manchmal etwas rum beim posten

Clemens ±0

EDIT: kann es sein das da am ende des letzten eintrages noch ein return hinten dran ist und der parseint nicht damit klar kommt?? ich habe nur leider keine ahnung wie ich das da weg bekomme Schreib die Datei einfach selber neu schön mit ":" als whitespace. Die Datei vom Tuwel ist nicht schön formatiert da kannst du relativ schnell in einen Fehler reinlaufen obwohl der Code eigentlich passen würde.

edit: E set(int index, E element) Replaces the element at the specified position in this list with the specified element.

Arraylist bietet das Einfügen an bestimmter Stelle an. Einziger Unterschied zum Array (mehr oder weniger) ist, dass es dynamisch ist.

Bruno ±0

danke für die antwort nigel

ich meinte eigentlich das ich ein objekt einer arraylist nicht so wie ein normales arrayobjekt ansprechen kann (bzw. eine variable darin)

also so: "objekt[i].variable = neuevariable"

habe nicht die datei von tuwel verwendet, ist alles auf meinem mist gewachsen trennen habe ich über string[] temp = sc.next().split(":") gemacht (also direkt einlesen und splitten am ":"

damit bleibt aber beim letzten element der ersten zeile ein zeilenumbruch (/n) am schluss stehen (sollte es noch jemandem so ergehen) LÖSUNG: .trim() methode verwenden wusste nicht das die auch umbrüche mitnimmt ^^

Bruno ±0

schon wieder doppelpost

verdammt noch mal was macht mein browser da andauernd?

Clemens ±0

danke für die antwort nigel

ich meinte eigentlich das ich ein objekt einer arraylist nicht so wie ein normales arrayobjekt ansprechen kann (bzw. eine variable darin)

also so: "objekt[i].variable = neuevariable" ^ Doch kannst du.

Bruno ±0

ja? also irgendwie funktioniert das bei mir nicht so ganz, hatte ursprünglich versucht ein objekt linienzug in die liste zu adden (in linienzug ist eine neue liste linien enthalten), und dann direkt im objekt linienzug eine neue linie hinzuzufügen, aber das wollte nicht funktionieren.

List<Linienzug> Linienzugliste = new Arraylist<Linienzug>;

im konstruktor von linienzug steht dann List<Linie> Linienliste = new Arraylist<Linie>;

dann funktioniert aber das hier nicht!

Linienzugliste[i].Linienliste[j].add(new Linie(ax,ay,ex,ey));

(Linie hat natürlich den ensprechenden konstruktor)

Sorry, die Kommentarfunktion ist geschlossen.