查找丢失号码的数组异常

时间:2014-02-14 06:47:07

标签: java arrays

我写了一个代码,用于查找系列中缺少的数字。在这里,我也得到了正确的结果缺少数字,但有例外。例外是arrayindexoutofboundsexception,这可能是因为我增加了数组的长度。

代码如下。任何有关删除该异常的帮助......

import java.io.*;
class findarr
{
    public static void main(String args[]) throws IOException
    {
        int a[] = {10,12,14,16,20};
        int x,y,z;
        for(int i=0;i<a.length;i++)
        {
            z = a[i+1]-a[i];
            if(z!=2)
            {
                x = a[i]+2;
                y = a[i+1]-2;
                if(x==y)
                System.out.println(x);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

如果i == a.length - 1,表达式z = a[i+1]-a[i];将生成一个ArrayOutOfBoundsException(因为a[i+1]超出了数组)。将您的循环限制为i < a.length - 1

答案 1 :(得分:0)

你必须将你的循环运行到a.length-1,如下所示:

for(int i=0;i<a.length-1;i++)
{
   z = a[i+1]-a[i]; //throws exception because of a[i+1]
   if(z!=2)
   {
        x = a[i]+2;
        y = a[i+1]-2;
        if(x==y)
        System.out.println(x);
   }
}

如果break; ...

,您应该(x==y)循环