Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Programmiersprachen (https://www.tweakpc.de/forum/programmiersprachen/)
-   -   Prüfen, ob es Arrayelement gibt. (https://www.tweakpc.de/forum/programmiersprachen/69073-pruefen-ob-es-arrayelement-gibt.html)

Greeven 10.03.2009 09:55

Prüfen, ob es Arrayelement gibt.
 
In einer Schleife wird mit einem Array immer das gleiche getan.
Nimm array(i+1) und mach das
nimm array(i-1) und mach das

Nun kommt es vor, dass die Schleife auf das array(-1) zugreifen will und mir eine Fehlermeldung ausgibt. (Oder das array hat sechs elemente und die Schleife will auf array(6) zugreifen.

Eine Funktion, die vorher schaut, ob es dieses Element überhaupt gibt bräuchte ich. (Und wie derjenige, der mir verrät, wie diese Funktion heißt, auf diese gekommen ist.)

Gruß Christian

redfalcon 10.03.2009 09:59

AW: Prüfen, ob es Arrayelement gibt.
 
Verrätst du uns noch die Programmiersprache? In Java könnte man da z.B. einfach eine Exception drum rum machen. Oder wenn du weist wie groß das Array ist, jeweils den Wert von i abfragen und bei Bedarf rausspringen.

Greeven 10.03.2009 10:02

AW: Prüfen, ob es Arrayelement gibt.
 
Oh verzeih. Java ist es. Eine Exception drum machen?

redfalcon 10.03.2009 10:42

AW: Prüfen, ob es Arrayelement gibt.
 
Wenn du in Java versuchst auf ein Arrayelement zuzugreifen was nicht existiert (z.B. bla[12], obwohl das Array nur 6 Elemente hat), wird eine Exception ("Ausnahmefehler") geworfen und das Programm stürzt ab. Nun kann man in Java solche Exceptions abfangen und entsprechend behandeln. Zum Beispiel:

[php]
void MachWas(){

int posArray[]= new int [6];
int irgendEinWert;
int i=1;

try{
while(i<5000){
posArray[i+1]=irgendEinWert;
i++;
}
}

catch(ArrayIndexOutOfBoundsException e){
System.out.println("Hier ist was schiefgelaufen, es wurde auf ein nicht vorhandenes Arrayelement zugegriffen!");
e.printStackTrace(); //Gibt Fehlerinformationen zu Testwecken
//Hier könnte man das Programm dann beenden, oder in eine andere Methode springen.
}

catch(Exception f){
System.out.println("Hier ist irgendwas anderes schiefgelaufen!");
f.printStackTrace(); //Gibt Fehlerinformationen zu Testwecken
}

}
[/php]


Alternativ bekommst du mit arrayname.length() auch die Größe des Arrays raus, du könntest also prüfen, ob i bei jedem Inkrement überhaupt einen gültigen Wert hat und ggf die Schleife beenden.

Exit 10.03.2009 14:29

AW: Prüfen, ob es Arrayelement gibt.
 
Uh - bitte nicht wirklich über das Exception Handling handeln, sondern doch schon direkt kontrollieren ob das Element existiert.

try - catch Blöcke kosten sehr viel Ressourcen und werden dementsprechend langsam abgearbeitet. Diese sind wirklich nur für Notfälle gedacht und sollten keinesfalls direkt in der Programmlogik verwendet werden.

Den Test solltest Du besser über Array.length machen, bei dem Du die Anzahl der Einträge im Array bekommst.

EoN 10.03.2009 15:34

AW: Prüfen, ob es Arrayelement gibt.
 
Wenn Du ne Schleife haben willst, die das Array von hinten durchgeht könnte das dann so aussehen:

[code]
for(int i = 0; i < ARRAY.length; i++ ) {
ARRAY[array.length - i - 1] = IRGENDWAS;
}
[/code]

Greeven 10.03.2009 17:27

AW: Prüfen, ob es Arrayelement gibt.
 
So könnte ich es auch machen. Mit try und catch läuft es momentan schon gut. Für die length-Variante müsste ich wissen, wie ich die Länge von dreidimensionalen Arrays bestimme.
Aber danke für den Hinweis, dass try-catch Ressourcen und Zeit kostet.

Exit 10.03.2009 22:09

AW: Prüfen, ob es Arrayelement gibt.
 
Schau mal hier rein:

[url=http://www.tutorials.de/forum/java-tutorials/277029-anfaenger-tutorial-arrays.html]Anfänger-Tutorial: Arrays - Java - Tutorials @ tutorials.de: Forum, Tutorial, Anleitung, Schulung & Hilfe[/url]

Und suche nach "3 Dimm" - dann kommste schon an die richtige Stelle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.

Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.