如何检查数组

时间:2015-08-24 23:06:09

标签: java arrays

假设我有一个数组或整数列表(没有重复),比如说:

int[] = { 35 165 21 5 6 55 7 42}

现在我需要根据两条规则过滤列表:

  1. 检查一个数字是否可以被数组中的每个其他数字整除。
  2. 如果数字大于其除数,则保留最大数。
  3. 让我再解释一下我的问题:

    假设我在之前的数组中选择165。现在,165不能被35,6,7,42整除;但它可以被5和55整除。所以,我从数组中删除了5和55。同样,21,6,7也被删除。因此,我的最终列表是:165, 35, 42

    我试图用以下代码对此进行排序:

    Set<Integer> MFV = new HashSet<>();
    for(i = 0; i < lwd.length; i++)
    {
        for(j = i; j < lwd.length; j++)
        { 
            if(i != j && (lwd[i] % lwd[j] == 0 || lwd[j] % lwd[i] == 0))
            {
                if(lwd[i] > lwd[j])
                    MFV.add(lwd[i]);
                //else
                    //MFV.add((int)lwd[j]);
            } 
        }
    }
    
    System.out.println();
    for(Iterator<Integer> it = MFV.iterator(); it.hasNext();)
    {
        System.out.print(it.next() + " ");
    }
    

    但是这会得到结果35, 165, 21

2 个答案:

答案 0 :(得分:1)

您的实施不起作用, 有两个原因:

  1. 您过早地将元素添加到不可分集的集合中:仅仅因为第i个元素被第j个元素除,并不意味着不应该删除第i个元素。它只意味着应该删除第j个元素。随着循环的继续,很可能也必须删除第i个元素,但是为时已晚,因为它已经被添加到不可分集的集合中。

  2. 用于在不可分集的集合中添加元素的条件<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <a href="#" id="videosButton">videos</a><br> <a href="#" id="graphicButton">graphic design</a><br> <a href="#" id="webButton">web design</a><br> My pages are formatted like so: <div id="videos" class="page">Videos page</div>是不够的:例如lwd[i] > lwd[j]永远不会成立,阻止x > c * x被添加到集。

  3. 根据数字的顺序, 实施可能会给出正确的结果。 通过重新排列数字很容易打破它, 例如,这个排序演示了我在上面指出的两个问题:

    c * x

    在此顺序中,程序输出:35,21。

    也就是说,21被错误地添加到集合中, 之前考虑21比42,这将消除21。 这证明了第一个问题。

    缺失的165表明了第二个问题: 在int[] lwd = {35, 21, 5, 6, 55, 7, 42, 165}; 比较中, 165将永远是第二个操作数,因为它位于列表的末尾, 它比所有其他元素都大, 所以它永远不会被添加到不可分割的集合中。

    这是修复这些问题的替代版本:

    lwd[i] > lwd[j]

答案 1 :(得分:0)

您的规则1与您的示例相冲突。

我相信你可以重新解决你的问题&#34;删除所有可以分割成另一个值的值&#34;。 (是&#34;可分为&#34;正确的短语?)

换句话说,删除所有a a < b && b % a == 0