gpt4 book ai didi

java - java方法中的数组,执行了什么?

转载 作者:行者123 更新时间:2023-11-30 04:09:44 27 4
gpt4 key购买 nike

我已经在这个java问题上苦苦挣扎了好几天了,现在我不得不放弃了。有人告诉我答案应该是 5 5 3 3,但我无论如何都不知道如何才能得到这个结果。

给出以下 java 方法:

public int[] methodName(int[] nums)
{
int largestOdd=0;
for(int i=nums.length-2;i>=0;i--)
{
if (nums[i+1] % 2 != 0 && nums[i+1] > largestOdd)
largestOdd = nums[i+1];

if (nums[i] == 0)
nums[i] = largestOdd;
}
return(nums);
}

执行以下Java语句时打印什么?

int[] nums = {0,5,0,3};
nums = methodName(nums)
for (int i = 0; i<nums.length;i++)
System.out.print(nums[i] + "");
System.out.println();

首先它会开始打印“5”,这对我来说没有任何意义。在我看来,它应该是“3”,因为 nums[2+1] = 3(最后一个索引元素)

其次,当方法中的循环只会循环 3 次直到达到 -1 时,为什么它会打印四个数字?

如果有人能以易于理解的方式解释如何获得结果,我会非常高兴。

提前致谢

最佳答案

methodName 向后运行数组,检查每对数字。在这种情况下,检查的第一对将是 (0,3)。

当它在对上运行时,methodName 会跟踪看到的最大奇数(它会查看每对的第二个数字)。

只要第一个数字为零,它就会将其设置为迄今为止看到的最大奇数。

所以在这种情况下,它将:

  1. 查看 (0,3)。
  2. 3 是奇数吗?是的。这是迄今为止见过的最大奇数吗?是的。因此,请跟踪 3。
  3. 0 是零吗?是的。因此将其设置为 3。现在数组为 {0, 5, 3, 3}。
  4. 将索引后移 1,查看 (5, 3)。
  5. 3 是奇数吗?是的。这是迄今为止见过的最大奇数吗?没有。
  6. 5 是零吗?没有。
  7. 将索引向后移动 1,然后查看 (0, 5)。
  8. 5 是奇数吗?是的。这是迄今为止见过的最大奇数吗?是的。所以记住 5。
  9. 0 是零吗?是的。因此将其设置为 5。现在数组为 {5, 5, 3, 3}。
  10. 我们已经位于数组的开头,因此无法再返回。
  11. 返回main方法,并打印数组的内容。

关于java - java方法中的数组,执行了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19946585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com