Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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 显示匹配行时出现ArrayIndexOutOfBound异常_Java - Fatal编程技术网

Java 显示匹配行时出现ArrayIndexOutOfBound异常

Java 显示匹配行时出现ArrayIndexOutOfBound异常,java,Java,我的android代码有问题。这段代码的目标是读取文本文件的每一行,以便与静态字符串相匹配。我还需要显示所有匹配的问题。 我的静态输入字符串是“what is your DOB”,还有一个文本(fms.txt)文件,其中包含资产文件夹中的所有问题。然后我编译了这段代码。我得到了错误的输出 我的代码 try { ins = this.getAssets().open("fms.txt"); reader = new BufferedReader(new InputStreamRea

我的android代码有问题。这段代码的目标是读取文本文件的每一行,以便与静态字符串相匹配。我还需要显示所有匹配的问题。 我的静态输入字符串是“what is your DOB”,还有一个文本(fms.txt)文件,其中包含资产文件夹中的所有问题。然后我编译了这段代码。我得到了错误的输出

我的代码

try {
    ins = this.getAssets().open("fms.txt");
    reader = new BufferedReader(new InputStreamReader(ins));
    line = reader.readLine();
    message = "What is your DOB";
    messages = message.split(" ");
    int i = 0, j = 0, inc = 1, oldin = 0;
    while (line != null) {
        lines = line.split("#");
        words = lines[0].split(" ");
        if (words[0].trim().equals(messages[0].trim())) {
            for(i = 1; messages[i].trim() != null; i++) {
                Log.e(TAG, "----------::::"+messages[i].trim());
                oldin = inc;
            }
        }
        line = reader.readLine();
    }
    ins.close();
    Log.e(TAG, "---------FMSG : "+finalmsg);
} catch(IOException e1) {
    e.printStackTrace();
}

问题似乎出在您的
for(i=1;messages[i].trim()…
中,因为
i
有时会大于或等于
messages
数组的长度。要解决此问题,应将代码更改为:

for (i = 1; i < messages.length && messages[i] != null &&
            !messages[i].trim().isEmpty(); i++) {
    //your business logic...
}


顺便说一句,下次请不要发布代码的图像,而是写在你的问题上。如果你不知道如何格式化代码,别担心,其他人会编辑问题并帮助你。stacktraces的建议也是一样。

你在这里面对的是ArrayIndexOutOfBoundsException,因为你还有一个白色的地方在你的比较中

替换

for(i=1; messages[i] != null, i++)

for(i=1;i
for(i=1; messages[i] != null, i++)
for(i = 1; i < messages.length && messages[i] != null && !messages[i].trim().isEmpty(); i++)