使用Java查找数组的连续元素

时间:2016-01-28 19:24:25

标签: java arrays

我在Java上几乎全新!我想控制数组中有4个连续元素是否有5个元素。有没有办法做到这一点?有人可以帮助我吗?谢谢!像{2, 3, 4, 5}一样连续。如果有{3, 4, 2, 5}例如这不是连续的。我想要一个简单的例子,如果有人可以帮助我。

我这样做但我认为这是不正确的:

 public int katerTeNjepasnjeshme()
 {
         int[] numrat=new int[zar.length];
         for(int i=0;i<zar.length;i++)
             numrat[i]=zar[i].getValue();
         int shuma=0;
         for(int i=0;i<zar.length-1;i++)
         {


    if(zar[i+1].getValue()==(zar[i].getValue()+1))
         Joptionpane.showMessageDialog(null,"Tere are cons elements");
}

3 个答案:

答案 0 :(得分:1)

这是一般的想法:
保持一个计数器(适当初始化),以便在迭代元素时跟踪连续元素的数量 如果计数器达到4,则表示已找到4个连续元素 如果遇到不连续的元素,则将计数器重置为1,然后继续检查下一个元素。

以下是一个示例代码段:

public static void findConsecutive()
    {
        int[] array = {1,2,3,5,6,7,8,10};

        int counter = 1;
        int i = 1;
        for (i = 1; i < array.length; i++)
        {
            if (array[i] == (array[i-1] + 1))
            {
                counter++;
                if (counter == 4)
                {
                    System.out.println("Consecutive elements are at array index: " + (i - 3) + " to " + i);
                    break;
                }
            }
            else
            {
                counter = 1;
            }
        }
    }

答案 1 :(得分:1)

我觉得这样的事情应该有效:

int[] mylist = new int[10];

for (int i = 0; i < myList.length; i++) {
    int k = 1;
    for (int j = 1; j < 5 j++) {
        if (mylist[i] == mylist[i+j]-j) {
            k++;
        }
        if (k=5) System.out.println("found");
    }
}

答案 2 :(得分:0)

一旦你需要比较数组的两个元素,你应该在循环中使用适当的边界,否则你将获得ArrayIndexOutOfBoundsException

boolean consequtive = true;
for (int i = 0; i < zar.length - 1; i++)                                 
    if (zar[i+1].getValue() != zar[i].getValue() + 1) {
        consecutive = false;
        break;
    }    
if (consequtive)
    Joptionpane.showMessageDialog(null,"Tere are cons elements");