变量未初始化 – 虽然我是?

回答

迈克建议我添加了一些代码

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 tweet类型应该只是0,1或2.该函数在受控环境中调用,这样我确信调用不会返回exception。

编辑结束。

我有个问题。 我正在尝试创建一个返回String数组的方法,此String数组的大小将根据作为参数传递给方法的消息类型而更改。 我有一些问题要完成,因为显然我没有初始化我的变量; 虽然,我想我是。

我遇到问题的变量是“messages”数组。

请记住,我不能声明以下内容:

 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; } 

如果tweetType < 0 || tweetType > 2 tweetType < 0 || tweetType > 2然后

 default: break; 

到达时没有为messages赋值。

您需要在default分支中分配值,或throwexception,或return以便在首次使用时初始化该数组。

也许改变它

 default: throw new IllegalArgumentException("Invalid tweet type : " + tweetType); 

或者理想地将tweetType更改为enum以便您可以详尽地涵盖所有情况。

 enum TweetType { MENTIONS, DIRECT_MESSAGES, ALL_MESSAGES, ; } 

并将int tweetType更改为TweetType tweetType

for循环的逻辑存在问题。 将数组设置为null可以很好地解决编译错误。 发布生成的错误堆栈跟踪以获取更多帮助。