变量未初始化 – 虽然我是?
回答
迈克建议我添加了一些代码
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
分支中分配值,或throw
exception,或return
以便在首次使用时初始化该数组。
也许改变它
default: throw new IllegalArgumentException("Invalid tweet type : " + tweetType);
或者理想地将tweetType
更改为enum
以便您可以详尽地涵盖所有情况。
enum TweetType { MENTIONS, DIRECT_MESSAGES, ALL_MESSAGES, ; }
并将int tweetType
更改为TweetType tweetType
。
for
循环的逻辑存在问题。 将数组设置为null
可以很好地解决编译错误。 发布生成的错误堆栈跟踪以获取更多帮助。