Java If条件整数

Java If条件整数,java,if-statement,Java,If Statement,我想了解这个算法是如何工作的。我有一个类Permute和一个方法Permute,它打印给定数组的所有可能的置换。我尝试了{1,2,3}。当我使用调试器检查时,我不明白如果k==arr.size-1,if语句是如何工作的 当k==1和arr.size==3时,它的计算结果为false;当k==2和arr.size==3时,它的计算结果为true 当大小为3时,arr.size-1==2。所以这是一场比赛 当大小为2时,arr.size-1==1,因此它与1不匹配 检查使用的是-1位,因为数组索引从

我想了解这个算法是如何工作的。我有一个类Permute和一个方法Permute,它打印给定数组的所有可能的置换。我尝试了{1,2,3}。当我使用调试器检查时,我不明白如果k==arr.size-1,if语句是如何工作的 当k==1和arr.size==3时,它的计算结果为false;当k==2和arr.size==3时,它的计算结果为true


当大小为3时,arr.size-1==2。所以这是一场比赛

当大小为2时,arr.size-1==1,因此它与1不匹配


检查使用的是-1位,因为数组索引从0开始。因此,一个包含5个元素的数组将变为0,1,2,3,4,大小将等于5。

如果您想知道为什么k==arr.size-1从给定的输入返回true或false-

当k==1且arr.size==3时,计算结果为false

这里,如果检查值为1==3-1?。它不相等,因此返回false

当k==2和arr.size==3时,计算结果为true

这里的检查是否为2==3-1?它是相等的,因此返回true。

对于arr.size=3,则arr.size-1=2,后者=k=2。
public class Permute
{
    static void permute(java.util.List<Integer> arr, int k){
        for(int i = k; i < arr.size(); i++){
            java.util.Collections.swap(arr, i, k);
            permute(arr, k+1);
            java.util.Collections.swap(arr, k, i);
        }
        if (k == arr.size() -1){
            System.out.println(java.util.Arrays.toString(arr.toArray()));
        }
    }
    public static void main(String[] args){
        Permute.permute(java.util.Arrays.asList(1,2,3), 0);
    }
}