比较堆栈中的项目

时间:2014-03-17 13:31:35

标签: java stack boolean

我试图比较两个单独的堆栈,看看它们是否相同。我有一个循环遍历每个堆栈中的每个对象并比较两个对象。我想要发生的是如果它们相等,继续循环并返回true。如果它们在任何给定点不相等,则打破循环并返回false。这就是我写的:

    public boolean isPalindrome (Stack a, Stack b) {
    Object temp1;
    Object temp2;
    boolean answer;

    for (int i = 0; a.size() > 0; i++) {
        temp1 = a.pop();
        temp2 = b.pop();

        if (temp1 != temp2) {
            answer = false;
        }
        else {
            answer = true;
        }

    }
    return answer;

}

我在这里看到的是我有一个布尔值,并且通过每个循环,boolean根据对象分配一个值,然后在循环结束时,返回该最近状态的布尔值。无论我将变量初始化为什么,它就像循环完全没有任何关系。你能不在循环中修改或返回一个布尔值?这个实例更好的方法是什么?我已经看过很多关于类似问题的其他帖子,但是大多数人似乎都尝试了一些不同的广告,我希望尽可能地坚持我原来的想法,我只需要知道我做错了什么。任何建议都会有很大帮助。谢谢!

5 个答案:

答案 0 :(得分:1)

找到堆栈后,return false(打破方法执行)的基本思路并不相同。否则return true

public boolean isPalindrome (Stack a, Stack b) {
    if (a.size() != b.size()) {
        return false;
    }

    while (a.size() > 0) {

        if (!a.pop().equals(b.pop())) {
            return false;
        }

    }
    return true;

}

答案 1 :(得分:1)

  public boolean isPalindrome (Stack a, Stack b) {
    Object temp1;
    Object temp2;
    boolean answer = true;

    for (int i = 0; a.size() > 0; i++) {
        temp1 = a.pop();
        temp2 = b.pop();

        if (temp1 != temp2) {
            answer = false;
            break;
        }

    }
    return answer;

}

答案 2 :(得分:1)

当您找到错误项目时,您需要放置return语句 - 否则,您只需返回循环的最后一次迭代中找到的布尔值。

public boolean isPalindrome (Stack a, Stack b) {
Object temp1;
Object temp2;
boolean answer;

for (int i = 0; a.size() > 0; i++) {
    temp1 = a.pop();
    temp2 = b.pop();

    if (temp1 != temp2) {
        answer = false;
        return answer;
    }
    else {
        answer = true;
    }

}
return answer;

}

答案 3 :(得分:1)

我的建议:

public boolean isPalindrome (Stack a, Stack b) {
    if (a.size() != b.size()) return false;
    while (a.size() > 0) {
        if (a.pop() != b.pop()) {
            return false;
        }

    }
    return true;

}

答案 4 :(得分:0)

在answer设置为false之后,您应该将break语句放入。如果没有这个,只有在最后一项不相等时才返回false。

快速注意:我还会为两个堆栈大小不同的情况添加一个检查。