已回答
Mike 建议我在
default:
break;
开关的一部分。我给它加了一个例外,其他的就不用改了。代码现在成功运行。多谢你们!
为可读性编辑:
错误:“描述资源路径位置类型局部变量消息可能尚未初始化 TweetFragment.java /Offline Twitter/src/com/deadpixels/offline/twitter 第 78 行 Java 问题”
对于线:
int handleStartsAt = messages[i].indexOf('@');
同样的错误在第 80 行发生了两次,即:
ph = messages[i].substring(handleStartsAt, messages[i].length());
至于你的问题,
default:
break;
添加了行,因为 int 推文类型只能是 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;
}