Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 变量未初始化-虽然我是?_Java_Arrays_String_Variables - Fatal编程技术网

Java 变量未初始化-虽然我是?

Java 变量未初始化-虽然我是?,java,arrays,string,variables,Java,Arrays,String,Variables,回答 Mike建议我在程序中添加一些代码 default: break; 开关的一部分。我为它添加了一个例外,不需要更改任何其他内容。代码现在已成功运行谢谢大家 为可读性而编辑: 错误:“描述资源路径位置类型” 本地变量消息可能尚未初始化TweetFragment.java/Offline Twitter/src/com/deadpixels/Offline/Twitter第78行“java问题” 对于第行: int handleStartsAt = messages[i].indexOf(

回答

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

编辑结束。

我试图创建一个返回字符串数组的方法。此字符串数组的大小将根据作为参数传递给方法的消息类型而变化。我在完成这项工作时遇到了一些问题,因为显然我没有初始化我的变量;虽然,我想我是

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

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

String [] messages = new String [arrayLength];
在调用的这一点上,我不知道数组的长度。我不能这样做:

String [] messages = null;
因为在这之后,我将遇到运行时错误,尽管在编译时没有收到警报

另外,为了澄清,我认为:

messages = OfflineTwitter.mentions;
上面的一行将初始化变量,“OfflineTwitter.indications”是一个数组,只存储在不同的类中

下面是代码片段

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;
}
public String[]getHandles(int-tweetType){
int arrayLength=0;
字符串[]句柄;
字符串[]消息;
开关(tweetType){
案例0:
arrayLength=OfflineTwitter.References.length;
messages=OfflineTwitter.notices;
打破
案例1:
arrayLength=OfflineTwitter.directMessages.length;
messages=OfflineTwitter.directMessages;
打破
案例2:
arrayLength=OfflineTwitter.allTweets.length;
messages=OfflineTwitter.allTweets;
违约:
打破
}
句柄=新字符串[arrayLength];
对于(int i=0;i
如果
tweetType<0 | | tweetType>2

default:
    break;
已到达,但未为
消息指定值

您需要在
default
分支中指定一个值,或
抛出异常,或
返回
,以便在首次使用时初始化数组

也许把它改成

default:
    throw new IllegalArgumentException("Invalid tweet type : " + tweetType);
或者理想情况下,将
tweetType
更改为
enum
,这样您就可以详尽地涵盖所有情况

enum TweetType {
  MENTIONS,
  DIRECT_MESSAGES,
  ALL_MESSAGES,
  ;
}

然后将
int-tweetType
更改为
tweetType-tweetType

for
循环的
逻辑中存在问题。将数组设置为
null
可以很好地避免编译错误。发布结果错误stacktrace以获取更多帮助。

提示:编译器没有撒谎。在任何情况下,发布准确的错误消息,包括行号。你没有说是哪个错误,或者发生在哪里。请发布完整的堆栈跟踪,并在代码中指明引发异常的位置。@JimGarrison这是编译器错误,没有堆栈跟踪;-)哪一行给了您错误?然后发布错误消息并指出代码中的那一行。但在这种情况下这不是问题,因为
arrayLength
将为零,循环将不会运行。@jnylen这是编译器错误,不是异常。编译器非常聪明,但它强制执行了可以轻松完成的静态分析规则。(事实上,我很确定这在JLS中作为一项要求得到了很好的定义。)因此,首先将数组设置为
null
。他说这会导致一个运行时错误。@jnylen,编译器不会试图证明这一点。@jnylen这不是“当前”问题,尽管这个问题措词不当。赋值
null
(首先)将消除编译器错误。。但是一个bug可能会导致运行时异常。