Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Blatt 1 Aufgabe 1.2 b)
Hallo alle zusammen,
ich habe eine Frage zur Aufgabenstellung 1.2 b).
"Vorhandene Einträge (egal ob null oder echte String-Objekte) sollen dabei überschrieben werden. Beachten Sie hierbei, dass s nicht symmetrisch sein muss, d.h. einzelne Unterfelder könnten […] sogar null sein.
In den Testfällen wird auch ein Array mit null-Werten erwartet wenn ich das richtig erkenne.
Sollen denn nun null-Werte überschrieben werden oder nicht?
Vielen Dank schon mal
Beispiel:
[ [ [ [“A”, null], [“B”, “C”] ] ] ]
=>
[ [ [ [“a=0,b=0,c=0,d=0”, “a=0,b=0,c=0,d=1”], [“a=0,b=0,c=1,d=0”, “a=0,b=0,c=1,d=1”] ] ] ]
Ist das Beispiel erklärend genug?
musste die “B” nicht so sein “a=0,b=0,c=1,d=0” ?? …
Ja natürlich. Danke für den Hinweis.
darf ich noch was fragen
wie soll ich wissen , ob was im Array steht ist null als String oder einfach null-Wert hat ? …
if(array == null){
...
}
else if(array[0] == null){
...
}
So? Meinst du das?
aber damit werde ich überprüfen ob das ganze Array leer ist … aber ich kann nicht verstehen zum Beispiel
wenn du [] oder [null] so was hast … was der Unterschied ? beide sind leer
Nein, leer und null sind zwei verschiedene sachen. Wenn du eine Referenzvraiable erzeigst, so zeigt diese auf null. erst ab initialisierung mit einem Wert, zeigt diese auf einen tatsächlichen speicherbereich. Der unterschied ist also bei dem einen(refrenz auf null) kriegst du ne NullPointerException beim anderen(leere Menge) eben nicht. Da hier die Referenz ja auf eine Sepicherstelle zeigt. probier mal den code dann siehst du den unterschied.
public static void main(String[] args){
int[] iLeer = {};
i = new int[0];
int[] i2null = null;
System.out.println(iLeer + " " + i2null);
}
und
int[] i = new int[null];
ist nicht möglich.
Vielleicht verstehe ich die Aufgabenstellung ja nicht - aber kann man einzelnen Dimensionen im Array denn wirklich Namen geben? Oder wie ist das mit a,b,c,d gemeint?
Meinst du das?
Das habe ich gelesen aber schon mal gar nicht verstanden was gemeint ist.
Und die verschachtelten Klammern sagen mir auch nichts, sollten die nicht nebeneinander sein statt ineinander?
Ich habe es durch eine iterative Herangehensweise geschafft, die vier Dimensionen zu befüllen. Allerdings bekomme ich eine NullPointerException beim testen, vermutlich weil ich nicht vorhergesehen habe was passiert wenn eine Stelle null bleibt und nicht beschrieben wird.
Zudem habe ich nun für jede Dimension Namen vergeben, so dass gilt String[][][][] s, String[][][] a, String[][] b, String[] c, String d
Bin aber nicht sicher ob das tatsächlich so gemeint war?
Bezüglich der NullPointerException bin ich selbst noch am überlegen… es wäre einfach nur den null-Fall bei der befüllung auszuschließen, aber das löst das Problem ja nicht…
Du scheinst da was nicht verstanden zu haben. Das in-ein-nander-schreiben der Klammern drückt aus, in welcher Dimension der Eintrag steht.
Beispiel:
String einArray[][][] = { { {"a","b","c"}, {"d","e"} }, { {"f","g"} } };
System.out.println( einArray[0][0][0] ); //a
System.out.println( einArray[0][0][1] ); //b
System.out.println( einArray[0][0][2] ); //c
System.out.println( einArray[0][1][0] ); //d
System.out.println( einArray[0][1][1] ); //e
System.out.println( einArray[1][0][0] ); //f
System.out.println( einArray[1][0][1] ); //g
Hilft das?
Ok danke das macht Sinn… Jede Zahl repräsentiert somit den Index in der jeweiligen Dimension, und die Dimensionen können dabei unterschiedlicher Länge sein…
Aber wie ist das mit der Vergabe der Buchstaben verbunden?
Die NullPointerException habe ich scheinbar erfolgreich umgangen, nun bleibe ich jedoch an der ersten Wertereihung hängen, sie werden nicht durch die zweite überschrieben.
So wie ich es verstehe, weil ich die Länge eines arrays zu bestimmen versuche, das in dem Moment null ist…
Ok danke für den Anstoß, jetzt gehts.
Ich hatte das mit den Buchstaben so verstanden, dass ich jedem teil-Array einen Buchstaben zugewiesen habe - sobald ich das wieder aufgegeben habe und die arrays normal mit eckigen Klammern addressierte ging auf einmal alles von selbst… Einfach die Aufgabenstellung mit dem “Dimensionen benennen” total mißverstanden.