找到最后一次出现的数组Java?

时间:2016-11-19 21:57:51

标签: java loops

我是Java的新手。我想使用循环获取数组中最后一次出现的索引。但是,我不明白为什么我不能。

这是数组:     {2,3,4,5,4,5,3}

我想得到最后4个的索引。

我的代码是:

public static void main(String args[]){
    int[] nums = {2, 3, 4, 5, 4, 5, 3};

    int pos4 = 0;
    for (int k = nums.length -1; k >= 0; k--){
        if (nums[k] == 4){
            pos4 = k;
            break;
        }
    System.out.print(pos4);
    }
}

结果是:00 ??

当我改为:

public static void main(String args[]){
    int[] nums = {2, 3, 4, 5, 4, 5, 3};

    int pos4 = 0;
    for (int k = nums.length -1; k >= 0; k--){
        if (nums[k] == 4){
            break;
        }
    System.out.print(k);
    }
}

我得到了65 ???

然而,当我直接从循环打印时,我得到了正确的索引:

public static void main(String args[]){
    int[] nums = {2, 3, 4, 5, 4, 5, 3};

    int pos4 = 0;
    for (int k = nums.length -1; k >= 0; k--){
        if (nums[k] == 4){
            System.out.print(k);
            break;
        }
    }
}

谁能告诉我为什么?非常感谢!

3 个答案:

答案 0 :(得分:3)

如何使用现有方法,而不是重新发明轮子?这个单线解决了这个问题:

Integer[] array = { 2, 3, 4, 5, 4, 5, 3 };
int idx = Arrays.asList(array).lastIndexOf(4);

答案 1 :(得分:3)

您的第一个示例是从循环内打印。一旦条件满足,您退出循环并且从不打印出最终值。

public static void main(String args[]){
    int[] nums = {2, 3, 4, 5, 4, 5, 3};

    int pos4 = 0;
    for (int k = nums.length -1; k >= 0; k--) {
        if (nums[k] == 4){
            pos4 = k;
            break;
        }        
    }
    System.out.print(pos4); // moved outside of loop to print final value
}

答案 2 :(得分:0)

你的print语句在循环中。所以它打印0次两次,然后当结果被发现时;跳过它。试试这个......

int pos4 = 0;
for (int k = nums.length - 1; k >= 0; k--) {
    if (nums[k] == 4) {
        pos4 = k;
        break;
    }
}
System.out.print(pos4);  // <== after loop
相关问题