在Java中计算数组的位置

时间:2014-12-20 10:47:50

标签: java

我想说:

int[] arr = new int[]{509,508,507,506,505,504,503};

the output should be: 3
  

*我需要从0到n从507到504计数,其中n是504所在的末尾。

     

*我对此感到困惑,我有一些代码,但它不是我想要的。

这是我的代码:

 int[] arr = new int[]{509,508,507,506,505,504,503};
 int d = 504;
 int s = 507;
 int x,y = 0;

 for(x = arr[s]; x < arr[d]; x++){
       y += 1;  
 }

任何人都可以帮我这个吗?非常感谢!

2 个答案:

答案 0 :(得分:1)

假设您知道507将出现在504之前,您可以使用布尔变量:

boolean count=false;
int y=0;
for (int x : arr) {
    if (x == 507)
        count = true;
    else if (x == 504)
        count = false;
    if (count)
        y++;
}
System.out.println(y);

答案 1 :(得分:0)

您可以创建一个函数,该函数返回数组中两个值之间的索引距离 如果其中任何一个不存在,则为-1。

public static int getDistance(int[] arr, int d, int s) {
       int indexD = -1; int indexS = -1;

       for (int i=0; i< arr.length; i++) {
           if (arr[i] == d) indexD = i;
           else if (arr[i] == s) indexS = i;

           if (indexD != -1 && indexS != -1)
               break;
       }
       if (indexD == -1 || indexS == -1) return -1;
       return Math.abs(indexD - indexS);
}

*此解决方案与排序或未排序的数组无关

*假设您的数组具有唯一值,但它仅适用于计算每个值的首次出现之间的距离。