计算机科学:Java MC

时间:2013-04-09 16:01:42

标签: java

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的值。

3 个答案:

答案 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未更改,这是正确的。但是,他们询问数组中的数据,函数的返回值和函数的参数之间的关系。

代码执行以下操作:

  • 以相反的顺序迭代数组。 (for loop)
  • 在迭代期间的每个索引处,它会针对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) - 因此答案是正确的