这有一个Array方法吗?

时间:2014-03-01 15:24:47

标签: java arrays methods

所以我有一个值数组

我有一个Int数组中的两个值,Say A [a]和A [b]

我现在想要搜索数组以查看它是否包含> A [a]但是< A [B]

我想看看数组中的值是否大于A [a]且小于A [b]

说我有[1,3,5,6]

A[0] = 1
A[2] = 5

现在我想要一个方法,看看我的两个选定值之间是否存在此数组中的值,即我应该为True,因为3是< 5>> 1

我该怎么做?有没有办法呢?

2 个答案:

答案 0 :(得分:2)

首先让我们重申一下你的问题:给两个值a和b搜索一个数组arrayValues,看看是否有值a和值b之间的任何值(a< x< b)。

    private boolean isPresent(int[] arrayValues, int a, int b) {
        boolean isPresent = false;
        int i = 0;
        while (!isPresent && i < arrayValues.length )) {
            isPresent = a < arrayValues[i] && arrayValues[i] < b;
                         i++;
        }

        return isPresent;
    }

关键计算是我们循环,直到找到满足条件的值(并且数组中有更多元素);并且我们使用和运算符(&amp;&amp;)来评估必须为真的两个条件。

答案 1 :(得分:0)

没有直接的方法,但您可以使用下面显示的技巧。

对数组进行排序 - &gt; 列出一个列表 - &gt; 使用lastindex和两个数字的第一个索引来决定。

请参阅以下代码:

    int[] ar = {1, 2, 4, 5, 2, 6};
    Arrays.sort(ar);
    List list = Arrays.asList(ar);

    int n1 = 4, n2 = 6; // Example of two numbers from array
    int indexDiff = list.lastIndexOf(n1) - list.indexOf(n2);
    if(indexDiff < -1){
        // there are items
    } else {
        // There are no items
    }

如果要查找的数字多于需要排序和转换为仅列表的数据。