private int[] myStuff;
/** Precondition: myStuff contains int values in no particular order.
/*/
public int mystery(int num)
{
for (int k = myStuff.length-1; k>=0; k--)
{
if (myStuff[k] < num)
{
return k;
}
}
return -1;
}
以下哪项最能描述myStuff之后的内容 以下声明已被执行?
int m = mystery(n);
答案:位置m + 1到myStuff.length-1的所有值都是 大于或等于n。
有谁可以解释为什么这个答案是正确的?我不确定它们的含义是什么,但我得出结论,myStuff没有改变,因为代码不会改变myStuff的值。
答案 0 :(得分:1)
Precondition表示, myStuff 包含没有特定顺序的整数值。 for循环初始化为 k 等于 myStuff 的长度减1(因为数组索引从零开始),迭代,而 k 更大大于或等于零,并在每次迭代中从 k 中减去一个。
如果您查看 if 语句,当 myStuff [k] <的相应索引处的值时,它将返回 k 的当前值/ strong>小于 n ;因此,数组索引中的所有值都大于返回值加1,必须大于或等于 n 。如果 myStuff 中没有数字整数大于 n ,则返回减1。
我希望这会有所帮助。
顺便说一句 - 你是对的, mySyuff 的内容没有改变。
答案 1 :(得分:1)
myStuff
未更改,这是正确的。但是,他们询问数组中的数据,函数的返回值和函数的参数之间的关系。
代码执行以下操作:
n
检查该索引的值,如果n
更大则返回当前索引。 (如果声明)那么该方法返回什么?它返回mystuff[m] < n
末尾的第一个索引。 (mystuff[i] >= num
)
答案 2 :(得分:0)
关于内容的问题是有效的。它与内容本身是否发生了变化无关。
当k
myStuff.length-1
小于0
myStuff[k]
时,此方法会返回非负数,当n
的所有元素大于或等于-1
时,或myStuff
。
让我们考虑两个案例:
m为非负数 - 表示位置n
是满足条件m
的最后一个来自右侧,您的答案是正确的< / p>
m是myStaff[m] < n
- 这意味着所有元素都大于-1
(在本例中为m+1
) - 因此答案是正确的