如何改进此算法以使用动态验证源?
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);
}
}
意思是,我想要代替if
循环内的for
,我希望收到一个列表并验证必须排除元素的内容,可能是这样的:
if(Arrays.asList(exclude).contains(i))
只是为了知道如何去做。我觉得它将来可能会有用。基本上我想使用数组跳过循环中的某些迭代。
如何
答案 0 :(得分:0)
这个电话:
Arrays.asList(exclude)
实际上它会创建一个List,这不是你想要的。如果您声明将数组排除为Integer数组,它将起作用:
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);
}
}
}
问题是,您为此Arrays.asList提供了int[]
。编译器必须决定它是否应该将泛型参数T解释为int或int []。但它无法选择int
,因为您不能将整数类型作为泛型类型。它可以选择Integer,但这意味着转换,因此int[]
不是直接的。所以T是int[]
,它只创建一个List<int[]>
,只有你提供的数组作为元素。当然,没有整数等于整个数组。这就是为什么要打印所有整数的原因。
答案 1 :(得分:-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);
}
}
}