Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回数组中值的最后一个索引_Java_Arrays - Fatal编程技术网

Java 返回数组中值的最后一个索引

Java 返回数组中值的最后一个索引,java,arrays,Java,Arrays,我遇到了一个问题,这个问题要求我返回数组中某个值的最后一个索引。这是到目前为止我的代码,我只需要知道返回什么的帮助 public int lastIndexOf(int[] nums, int value) { for (int i : nums) { if (i == value) { return; } else { return -1; } } } 你的代码永远不会工作;它将

我遇到了一个问题,这个问题要求我返回数组中某个值的最后一个索引。这是到目前为止我的代码,我只需要知道返回什么的帮助

public int lastIndexOf(int[] nums, int value) {
    for (int i : nums) {
        if (i == value) {
            return;
        } else  {
            return -1;
        }
    }
}

你的代码永远不会工作;它将在访问数组的第一个元素后返回结果,而不是访问每个元素

我建议你这样做:

public int lastIndexOf(int[] nums, int value) {
    int index = -1;
    for (int i = 0; i < nums.length; i++)
        if (nums[i] == value)
            index = i;

    return index;
}
public int lastIndexOf(int[]nums,int-value){
int指数=-1;
对于(int i=0;i
您可能希望向后遍历数组,以便在找到要查找的最右边的元素后立即返回

public int lastIndexOf(int[] nums, int value) {
    for (int i = nums.length - 1; i >= 0; i--) {
        if (nums[i] == value) {
            return i;
        }
    }
    // the loop ended and we didn't find anything
    return -1;
}

使用stream()、Collections.reverse()和indexOf()的替代方法

public int lastIndexOf(int[]nums,int-value){
List numsList=Arrays.stream(nums).boxed().collect(Collectors.toList());
Collections.reverse(numsList);//现在列表已反转
返回numsList.indexOf(value)=-1?-1:numsList.size()-numsList.indexOf(value)-1;
}

使用正常的
for
循环从最后一个元素向后循环。增强循环不适合此问题。您不希望将
返回-1
放在循环中,此后,一旦发现任何元素不等于
,它将立即终止。感谢所有人的帮助。@nylanderDev请不要通过添加原始海报中未包含的代码来大幅更改其他人的答案。请发表您自己的答案。@FedericoklezCulloca我认为改进是可以接受的。感谢您修改编辑。@FedericoklezCulloca也许我可以将他的解决方案添加到我的解决方案中,然后显示他的名字,以示公平。@nylanderDev,这对你有好处吗?@0009laH在Frederico的答案中,同样的解决方案现在是可用的,所以我认为这不是必要的。我相信你的循环条件中有一个输入错误。
public int lastIndexOf(int[] nums, int value) {
    List<Integer> numsList = Arrays.stream(nums).boxed().collect(Collectors.toList());
    Collections.reverse(numsList); // now the list is reversed
    return numsList.indexOf(value) == -1 ? -1 : numsList.size() - numsList.indexOf(value) - 1;
}