Variable nicht initialisiert - obwohl ich es bin? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Warum erhalte ich den Compilerfehler "Variable wurde möglicherweise nicht initialisiert" in meinem Switch-Block? 1 Antwort

Antwortet

Mike schlug vor, dass ich etwas Code zum @ hinzufüg

default:
break;

Teil des Schalters. Ich habe eine Ausnahme hinzugefügt, und es besteht keine Notwendigkeit, etwas anderes zu ändern. Der Code wird jetzt erfolgreich ausgeführt.Danke Leute

UR LESBARKEIT GEEIGNET:

Error: "Beschreibung Ressourcenpfad Positionstyp Die lokalen Variablennachrichten wurden möglicherweise nicht initialisiert. TweetFragment.java / Offline-Twitter / src / com / deadpixels / Offline / Twitter-Zeile 78 Java-Problem"

für Zeile:

int handleStartsAt = messages[i].indexOf('@');

Und derselbe Fehler tritt zweimal in Zeile 80 auf, nämlich:

ph = messages[i].substring(handleStartsAt, messages[i].length());

Soweit Ihre Fragen, die

default:
break;

line wurde hinzugefügt, da der int-Tweet-Typ nur 0, 1 oder 2 sein sollte. Die Funktion wird in einer kontrollierten Umgebung aufgerufen, und auf diese Weise wird der Aufruf sicher keine Ausnahme zurückgeben.

END OF EDIT.

Ich versuche eine Methode zu erstellen, um ein String-Array zurückzugeben. Dieses String-Array hat eine Größe, die sich abhängig vom Nachrichtentyp ändert, der als Parameter an die Methode übergeben wird. Ich habe einige Probleme damit, da ich anscheinend meine Variable nicht initialisiere. obwohl ich denke ich bin.

Die Variable, mit der ich Probleme habe, ist das Array "messages".

Beachten Sie, dass ich Folgendes nicht deklarieren kann:

String [] messages = new String [arrayLength];

ie an dieser Stelle im Aufruf kenne ich die Länge des Arrays nicht. Und das kann ich nicht:

String [] messages = null;

since danach werde ich in einen Laufzeitfehler laufen, obwohl keine Warnungen zur Kompilierungszeit erhalten.

Auch nur zur Verdeutlichung hätte ich das allerdings:

messages = OfflineTwitter.mentions;

die obige Zeile würde die Variable initialisieren, "OfflineTwitter.mentions" ist ein Array, das nur in einer anderen Klasse gespeichert ist.

Hier ist das Code-Snippet.

public String[] getHandles (int tweetType) {

    int arrayLength = 0;
    String [] handles;
    String [] messages;

    switch (tweetType) {
    case 0:
        arrayLength = OfflineTwitter.mentions.length;
        messages = OfflineTwitter.mentions;
        break;
    case 1:
        arrayLength = OfflineTwitter.directMessages.length;
        messages = OfflineTwitter.directMessages;
        break;
    case 2:
        arrayLength = OfflineTwitter.allTweets.length;
        messages = OfflineTwitter.allTweets;
    default:
        break;
    }

    handles = new String [arrayLength];

    for (int i = 0; i < arrayLength; i++) {
        int handleStartsAt = messages[i].indexOf('@');
        String ph = "";
        ph = messages[i].substring(handleStartsAt, messages[i].length());
        int handleEndsAt = ph.indexOf(":");
        String sender = ph.substring(0, handleEndsAt);
        handles[i] = sender;
    }

    return handles;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage