PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Größe eines n-Dim-Arrays in Java


Stone2001
2004-01-04, 18:18:47
Abend,

ich hab folgendes Problem:
Ich muß die Länge eines n-dim-Arrays bestimmen, weiß aber nicht wie.

Etwas konkreter:
Im 2-dim-Fall kann ich mit Array[n].lenght die Länge des n. ten Arrays bestimmen. Aber wie kann ich bestimmen, wieviele Arrays ich habe?

Gruß Stone

HellHorse
2004-01-04, 22:28:00
aehm
array.length?

Oder willst du die Dimensionaltät wissen? Die sieht man ihm ja an.

Stone2001
2004-01-04, 23:24:52
hmm, haste recht! Aber dann stimmt wieder etwas mit dieser Software nicht.
Gerade in einer kleinen Test-Klasse funktionierts, im eigentlichen 'Einsatzort' bekomme ich aber immer 1 zurück, was definitiv nicht stimmen kann. Dann muß der Fehler doch woanders liegen. ???

Thx so far!

Stone2001
2004-01-05, 14:31:19
hmm, inzwischen gehe ich davon aus, das die Dokumentation zur der Software mal wieder einen Fehler hat.

HellHorse
2004-01-05, 17:48:28
Es fragt sich sowieso was für einem Sinn ein Array der Länge 1 macht.

Ich würde ihm gegeben Fall auch dort ansetzen, woher das Array kommt.

Du kannst auch sowas probiern:

int computedLength = 0;
for(;;++computedLength) {
try {
array[computedLength].getClass(); //oder was anderes, Hautsache ein Statement
}
catch (IndexOutOfBoundsException err) {
++computedLength;
break;
}
}

Das ist aber extrem hässlich und falls es etwas anderes als array.length liefert, wäre das ein recht krasser Fehler in der VM, was sehr unwahrscheinlich ist.

BTW
IIRC kackt die Software des SpaceShuttle alle 3 Jahre einmal ab.

Stone2001
2004-01-05, 18:01:30
Original geschrieben von HellHorse
Es fragt sich sowieso was für einem Sinn ein Array der Länge 1 macht.

Ich würde ihm gegeben Fall auch dort ansetzen, woher das Array kommt.

Du kannst auch sowas probiern:

int computedLength = 0;
for(;;++computedLength) {
try {
array[computedLength].getClass(); //oder was anderes, Hautsache ein Statement
}
catch (IndexOutOfBoundsException err) {
++computedLength;
break;
}
}

Das ist aber extrem hässlich und falls es etwas anderes als array.length liefert, wäre das ein recht krasser Fehler in der VM, was sehr unwahrscheinlich ist.

BTW
IIRC kackt die Software des SpaceShuttle alle 3 Jahre einmal ab.
Ein Array der Länge macht dann Sinn, wenn man eine Funktion schreibt welche eigentlich Array als Übergabeparameter erwartet, man aber nur ein Element übergeben will.
In meinem Fall bekomme ich ein 2-Dim Array von ObejctDatas (im Prinzip ist es eine Bildfolge). Die Länge der ersten Dimension gibt mir meine Anzahl von Bildern in der Folge an und die zweite Folge ist dann das jeweilige Bild. (Zumindest steht das so in der Doku)

Die Exception abzufangen wäre, zugegeben etwas furchtbare, Möglichkeit an den Index zu kommen, aber sie wäre immerhin machbar.

HellHorse
2004-01-05, 18:15:58
Also liegen die Bilder als Array vor? Oder wie muss ich mir das vorstellen?

Angenommen ein Bild wäre ein 1d-Array, dann könnte man mehrere Bilder als 2d-Array übermitteln
array[i], wäre Bild i, ein Array
array[i][y] z.B Pixel y in Bild i

Im Fall, dass das Bild selbst als Objekt gekapselt ist, reicht ja ein 1d-Array
array[i], ein Bild Objekt.

Falls array.length 1 ist, heisst es in beiden Fällen, dass man es mit einem Bild zu tun hat.

Habe ich das etwa richtig verstanden, dass wir den 1. Fall haben?

Stone2001
2004-01-05, 18:23:07
yup, hast du! Und ja, in beiden Fällen dürfte array.length = 1 bedeuten, dass nur ein Bild vorhanden ist.

HellHorse
2004-01-06, 00:00:14
Und es sollte mehr als ein Bild vorhanden sein?
(bin Berner, brauche etwas länger)

Stone2001
2004-01-06, 12:05:41
Original geschrieben von HellHorse
Und es sollte mehr als ein Bild vorhanden sein?
(bin Berner, brauche etwas länger)
Ich persönlich arbeite nur mit einem Bild, die Sequenz aus der ich das Bild extrahiere, hat meistens mehr als ein Bild, ja.

Was jetzt noch sein kann ist, das die Methode (die ist nicht von mir) die mir die Sequenz aus meinem View extrahiert, mir nur ein Bild zurückliefert.

ethrandil
2004-01-06, 13:41:29
Wenn sich der sourcecode auftreiben ließe wär das ganze wahrscheinlich schneller geklärt ;)
Wie wärs wenn du das Bild das du bekommst einfach mal anzeigen lässt?
Dann siehst du ja was es ist...

Eth

Stone2001
2004-01-06, 14:06:44
Den Sourcecode werde ich hier sicherlich nicht posten, da hat sicherlich eine Firma etwas dagegen! ;)

Und das mit dem Bild anzeigen lassen, ist auch eine Idee die absolut nichts bringen wird! ;) Erst durch die Anzeige der Bilder bekomme ich die Daten der Bilder (also Zugriff auf einzelne Pixel, ...).
Wie gesagt, inzwischen gehe ich davon aus, das es ein Fehler in der Doku ist oder mir die Methode zum auslesen der Pixeldaten mir nur ein Bild zurückliefert.

Aeros405
2004-01-22, 11:34:37
Wie wärs mit reindebuggen, wenn du den Sourcecode hast, dann dürfte es doch kein Problem sein zu schauen, was da vor sich geht.

Stone2001
2004-01-22, 19:55:54
ähh, das Problem ist sich mitlerweile erledigt. Es lag schlicht und einfach an der mangelhaften Dokumentation.
Inzwischen gibt es andere Probleme (z.B. wie ich Daten aus einer JTable wieder auslesen kann,...)

Aber was meinst du mit 'reindebuggen'? Debuggen dürfte aber auch hier nichts bringen, da der Fehler nicht in meinem Quellcode, sondern in Klassen von anderen lag.