答えた
マイクは私がいくつかのコードを追加することを提案しました
default:
break;
スイッチの一部。例外を追加しましたが、他に変更する必要はありません。これで、コードは正常に実行されます。みんなありがとう!
読みやすさのために編集:
エラー:「説明リソースパスの場所の種類ローカル変数メッセージが初期化されていない可能性がありますTweetFragment.java /offline Twitter / src / com / deadpixels / offset / twitter line78Javaの問題」
行の場合:
int handleStartsAt = messages[i].indexOf('@');
また、同じエラーが80行目で2回発生します。つまり、次のようになります。
ph = messages[i].substring(handleStartsAt, messages[i].length());
あなたの質問に関しては、
default:
break;
int tweetタイプは0、1、または2のいずれかである必要があるため、行が追加されました。関数は制御された環境内で呼び出され、そのようにして呼び出しが例外を返さないことを確認します。
編集の終わり。
文字列配列を返すメソッドを作成しようとしています。この文字列配列のサイズは、パラメータとしてメソッドに渡されるメッセージタイプに応じて変化します。どうやら変数を初期化していないので、これを行うのにいくつかの問題があります。しかし、私はそうだと思います。
私が問題を抱えている変数は「メッセージ」配列です。
私は次のことを宣言できないことに注意してください。
String [] messages = new String [arrayLength];
呼び出しのこの時点で、配列の長さはわかりません。そして、私はこれを行うことはできません:
String [] messages = null;
この後、コンパイル時にアラートが表示されないにもかかわらず、ランタイムエラーが発生します。
また、明確にするために、私はそれを持っているでしょう:
messages = OfflineTwitter.mentions;
上記の行は変数を初期化しています。「OfflineTwitter.mentions」は配列であり、別のクラスにのみ格納されます。
これがコードスニペットです。
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;
}