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.
error in funktion:"variable might not have been initial
ich hab ne methode geschrieben, um quasi die funktion "startWith" nachzubilden.
gegeben hab ich einen char-array mit der ganzen zeichenkette und einen kürzeren array. ich muss also schauen, ob der lange array mit dem kürzeren beginnt.
ich glaub die methode ist auch richtig geschrieben, nur schreibt mir der compiler bei "return start;" den fehler "variable start might not have been initialized". ich weiß aber nicht ganz, wie ich die methode umschreiben soll, damit ich dieser variable außerhalb der schleifen die werte true/false zuweisen kann. hat wer ne idee?
hier der code:
Code:
static boolean startsWith(char[] s1, char[] s2) {
boolean start;
int i;
for (i=0; i<s2.length && s1[i]==s2[i]; i++) {
start=true;
}
if (s1[i]!=s2[i]) {
start=false;
}
return start;
}
Du musst die variable einfach direkt initialisieren
a la: boolean start = false;
Der kompiler kann nicht wissen, ob die if-Bedingungen zutreffen. Die können genauso gut beide nicht zutreffen. Dann könnte er ja return nicht ausführen, weil die variable schlicht keinen Wert hat
static boolean startsWith(char[] s1, char[] s2) {
int i;
for (i=0; i<s2.length && s1[i]==s2[i]; i++) {
boolean start=true;
}
if (s1[i]!=s2[i]) {
boolean start=false;
}
return start;
}
aber das geht auch nicht, weil die variablen dann ja nur für die schleifen gelten.
bzw. hab ich den versuch gemacht, den code gleich wie vorher zu lassen, nur bei der deklaration "boolean start = false;" zu schreiben - dann geht zwar das kompilieren, aber er gibt mir dann beim ausführen einen fehler aus... :bahnhof:
Ahja. Ich seh schon. Ne ArrayOutOfBoundsException. Beim if wird auf einen Index außerhalb des Arrays zugegriffen, da i ganu eins zu groß ist. Also müsstest du
Code:
...
if(s1[i-1]!=s2[i-1])
...
schreiben
Aber mal ne frage... warum vergleichst du eigentlich das letzte Zeichen des ersten Arrays mit einem aus dem anderen?
Das kann getroste weg gelassen werden, da du start ja mit false initialisierst und mit der Schleife auf true setzt, wenn der Anfag des zweiten Arrays mit dem ersten übereinstimmt.
Also letztendlich so:
DANKE @dreezard!!!!
habs jetzt so probiert, wie du's geschrieben hast (also die letzte if-anweisung weg gelassen), und es funkt supa!
danke nochmal!! (somit ist der restliche sonntag gerettet! )