0

已回答

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

2 回答 2

3

如果tweetType < 0 || tweetType > 2那时

default:
    break;

已达到不为 赋值messages

您需要在default分支中分配一个值,或者throw一个异常,或者return使数组在第一次使用时被初始化。

也许将其更改为

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

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

enum TweetType {
  MENTIONS,
  DIRECT_MESSAGES,
  ALL_MESSAGES,
  ;
}

并更改int tweetTypeTweetType tweetType.

于 2012-08-27T19:34:39.223 回答
-1

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

于 2012-08-27T19:36:27.627 回答