0

如何改进此算法以使用动态验证源?

public static void main(String[] args) 
{
    int[] exclude = {1, 4, 7};

    for(int i= 0 ; i < 10; i++)
    { 
        if(i != 1 || i != 4 || i != 7);
        {
            continue;
        }
    }
        System.out.println(i);
    }
}

意思是,我想而不是iffor循环内部,我想接收一个列表并验证必须排除元素的内容,可能是这样的:

        if(Arrays.asList(exclude).contains(i))

只是为了知道如何去做。我觉得它可能在未来很有用。基本上我想使用数组跳过循环中的某些迭代。

如何

4

2 回答 2

0

这个电话:

Arrays.asList(exclude)

实际上它创建了一个列表,这不是您想要的。如果您声明将数组排除为整数数组,它将起作用:

public static void main(String[] args) 
{
    Integer[] exclude = {1, 4, 7};

    for(int i= 0 ; i < 10; i++)
    {
       if(!Arrays.asList(exclude).contains(i))
       {
           System.out.println(i);
       }
    }
}

问题是,您为int[]这个 Arrays.asList 提供了一个。编译器必须决定是否应该将泛型参数 T 解释为 int 或 int[]。但它不能选择int,因为你不能将整数类型作为泛型类型。它可以选择 Integer,但这意味着转换,int[]因此不是直接的。所以 T 是,它只使用您作为元素提供的数组int[]创建一个。List<int[]>当然,没有整数等于整个数组。这就是打印所有整数的原因。

于 2013-03-06T01:56:19.770 回答
-1

好像你已经拿到了?

public static void main(String[] args) 
{
    int[] exclude = {1, 4, 7};

    for(int i= 0 ; i < 10; i++)
    {
       if(Arrays.asList(exclude).contains(i))
       {
           i++;
       }
       else 
       {
           System.out.println(i);
       }
    }
}
于 2013-03-06T01:42:24.023 回答