首页 > 解决方案 > 如何编写一个程序来返回Java中整数数组中给定值最后一次出现的索引位置?

问题描述

例如给定一个整数数组:

{1, 2, 3, 1, 4} 和一个整数值 1

该方法将返回 3 作为给定值的最后一个索引位置。如果数组不包含给定值,则该方法应返回 -1。

我的代码:

public int lastIndexOf(int[] values, int value) {

    for( int i=0; i< values.length ; i ++ )
        if( values[ i ] == value)
            return i;

    return -1;
}

结果我得到了什么:

org.opentest4j.AssertionFailedError: 
Expected :5
Actual   :-1

预期结果:

 @Test
public void testLastIndexOf() {
    assertEquals(5, main.lastIndexOf(new int[]{1, 2, 3, 4, 5, 1}, 1));
    assertEquals(-1, main.lastIndexOf(new int[]{2, 3, 3, 2, 4, 5, 4}, 1));
    assertEquals(0, main.lastIndexOf(new int[1], 0));
    assertEquals(4, main.lastIndexOf(new int[]{0, -1, 1, 8, 8, -1, 6, -2}, 8));
}

标签: javaarrays

解决方案


因为你想要最后一个索引,所以你可能会以相反的顺序读取数组,从头到尾能够在第一次匹配时停止

public int lastIndexOf(int[] values, int value) {
    for (int i = values.length - 1; i >= 0; i--) {
        if (values[i] == value) {
            return i;
        }
    }
    return -1;
}

推荐阅读