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);
    }
}

ifつまり、ループ内の代わりにfor、リストを受け取り、除外する必要がある要素の内容を検証したいのですが、おそらく次のようなものです。

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

それを行う方法を知るためだけに。将来的に役立つ可能性があると感じています。基本的に、配列を使用してループ内の特定の反復をスキップしたいと考えています。

どのように

4

2 に答える 2

0

この呼び出し:

Arrays.asList(exclude)

実際にはリストを作成しますが、これはあなたが望むものではありません。array を 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);
       }
    }
}

int[]問題は、この Arrays.asList にを提供していたことです。コンパイラは、ジェネリック パラメーター T を int として解釈するか、int[] として解釈するかを決定する必要があります。ただしint、整数型をジェネリック型として持つことができないため、選択できません。整数を選択することもできますが、変換を意味する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 に答える