我在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");
}
答案 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");