在布尔型中为左/右使用布尔值

时间:2019-02-01 12:00:10

标签: java stack boolean

我在学校有任务。这涉及使用布尔值true / false来创建一个twostack数组,以在堆栈中向右/向左访问。

我有点用堆栈绿色!而且不知道如何实现此布尔值s * t

有什么提示吗?未完成的代码摘录如下: ...

/**
 * Stacks of top-element of given stack and return it.
 * @param right true if right stable, false if left stable
 * @throws TwostackEmptyException if stable is empty
 */
@Override
public Object pop(Boolean right) throws TwostackEmptyException {
    return null;
}

/**
 *  Return top element of given stack, but doesnt remove it.
 *  @param right true if right, false if left
 *  @throws TwostackEmptyException if stacks empty.
 */
@Override
public Object peek(Boolean right) throws TwostackEmptyException {
    return null;
}

1 个答案:

答案 0 :(得分:0)

让我们使用制作两个堆栈的数组的基本形式;取一个规则数组并将其“拆分”成两半。

如果数组的最大大小为N,则数组的“左侧”将从“ array [0]”延伸到“ array [n / 2]”(中间标记)。

“右侧”从“ array [n / 2]”到“ array [n-1]”(末尾)。

例如,如果我们要将玩具车放到“ ToyCollection”数组的左侧,那是10号吗?然后,我们可以将其放入上半部分的“ ToyCollection [0-4]”中。我们只将可动人偶放到“ ToyCollection [5-9]”插槽中。

请注意,我们实际上并不是将数组拆分成两半,但是我们告诉自己,我们不会在某些插槽中放置某些项目。

那么布尔值如何工作呢?对于上面的示例,我们假设我们有一个布尔值“ WantToyCars”。如果此布尔值为True,那么我们只希望访问数组的 left 端。

因此,让我们返回其中的一部分。有几种分割数组的方法,但是我将使用所有数组都具有的内置“ copyOfRange”函数。一些伪代码来说明这个想法;

public Toy[] getCars(Toy[] ToyCollection, boolean WantToyCars) {
     if (WantToyCars) {
        Toy[] ToyCars = Arrays.copyOfRange(ToyCollection, 1, (ToyCollection.length / 2));
        return ToyCars;
     }
}

如果这符合您的任务结构,那么我认为可以解决问题。