我已经在这个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
会跟踪看到的最大奇数(它会查看每对的第二个数字)。
只要第一个数字为零,它就会将其设置为迄今为止看到的最大奇数。
所以在这种情况下,它将:
- 查看 (0,3)。
- 3 是奇数吗?是的。这是迄今为止见过的最大奇数吗?是的。因此,请跟踪 3。
- 0 是零吗?是的。因此将其设置为 3。现在数组为 {0, 5, 3, 3}。
- 将索引后移 1,查看 (5, 3)。
- 3 是奇数吗?是的。这是迄今为止见过的最大奇数吗?没有。
- 5 是零吗?没有。
- 将索引向后移动 1,然后查看 (0, 5)。
- 5 是奇数吗?是的。这是迄今为止见过的最大奇数吗?是的。所以记住 5。
- 0 是零吗?是的。因此将其设置为 5。现在数组为 {5, 5, 3, 3}。
- 我们已经位于数组的开头,因此无法再返回。
- 返回main方法,并打印数组的内容。
关于java - java方法中的数组,执行了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19946585/