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