Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi ich hab ein kleines Codeproblem bei dem ich gerade ein wenig auf dem Schlauch stehe.
Leider bin ich totaler Programmier-Noob, aber jeder fängt mal klein an. :rtfm:
Ich möchte Überprüfen ob ein Array in einem anderen Array vorkommt. Mein Ziel ist es die Anfangsstelle zu bekommen, in der die beiden Arrays gleich sind.
Dabei benutzte ich nach einer for-schleife if-anweisungen:
1.
irgendwie kann ich nach den if anweisungen, dem Wert von i nicht auf das "j" zuweisen (i nicht initialisiert) ???:L . Ich brauche aber das "i" weil es der Anfangswert ist, wenn mein Array1 mit dem Array2 Übereinstimmt. Warum ist das "i" nicht initialisiert, wo es doch oben in der schleife durchläuft, die stopt wenn meine 3te if-anweisung zutrifft?
2. Das "else" mag leider auch nicht :autsch: wenn es nähmlich nicht überseinstimmt soll j = -1 sein, aber eclipse meint "token muss gelöscht werden wg. Syntaxfehler".
Ich hoffe dass wenigstens der
Java:
-Tag funktioniert in dem ich das reinschreiben soll :oops:
blubb!
Danke!
Grüße
nicht deklariert sind, sollte das grob passen.
Am besten postest du deinen kompletten Code, so fern er nicht sehr lang ist. Ansonsten die komplette Klasse, die Probleme macht. Das was du gepostet hast sieht recht seltsam aus.
Im übrigen empfiehlt es sich, IMMER geschweifte Klammern bei if, else, for, ... zu setzen. Verbessert die Lesbarkeit und vermeidet Fehler.
new CodeSnippet();
public static int teilArr(char arrCopy[], int Counter){
//Variable j entspricht der Anfangstelle an der das Array übereinstimmt
int j;
//tal = teil array länge
int tal=3;
char tArr[]=new char[tal];
// Das Wort "ein" soll gesucht werden
tArr[0]='e';
tArr[1]='i';
tArr[2]='n';
//"Main"-Array durchlaufen ob "e" drin vorkommt
for(int=0; i < counter; i++)
if(arrCopy[i]==tArr[0]{
if(arrCopy[i+1]==tArr[1]){ //Wenn "e" drin vorkommt, gucken ob der nächste ein "i" ist
if(arrCopy[i+2]==tArr[2]{ // wenns ein "i" war schauen ob der nächste ein "n" ist
break; // alles am start -> raus aus der schleife
}
}
}
j=i; // i ist die stelle an der das "e" war
else // war nix am start -> rückgabe soll -1 sein
j=-1;
return j; // j wird zurückgegeben
}
Das Problem an den Klammern ist (wenn ich es richtig verstanden habe), das ich dann einen Block bilde und die Informationen im Block nicht heraus können => die Methode findet meinen rückgabewert bei "return" nicht und das "i" wird trotzdem verschluckt.
Das ganze sieht komisch aus, weil ich zum ersten mal sowas mache. ;-) Alle bisherigen Programmierungen sahen komisch aus, aber beim 2. Mal wars immer kürzer und wesentlich einfacher geschrieben.
Du verwendest Eclipse? In deinem Code sollte noch ein "bisschen" mehr bemängelt werden...
- Was macht Zeile 1? Bzw. was sollte sie deiner Meinung nach tun?
- Jede öffnende Klammer sollte auch wieder geschlossen werden Siehe Zeilen 19 und 21
- Variablen müssen nicht i oder j heißen. Statt j würde ich z.B. "returnValue" oder "rueckgabeWert" schreiben, dann ist klarer was gemeint ist.