【问题标题】:Trouble with stack.peek()? [duplicate]stack.peek() 有问题吗? [复制]
【发布时间】:2014-05-15 22:56:21
【问题描述】:

我的这部分代码似乎不起作用。我觉得问题可能与代码的 stk.peek() 部分有关,但我不确定这是否属实。有什么想法吗?

stk 是我的堆栈,读入代码的第一件事是“(”

if(stk.empty()==true || stk.peek()== "("){
    stk.push(post.get(i))      
    System.out.println("Test1:" +stk.peek());
}

【问题讨论】:

  • 问题是您没有正确比较字符串。使用.equals(),而不是==
  • 为什么写stk.empty()==true?当然stk.empty()==(1 == 1) 会更清楚。或者,stk.empty()== ((1 == 1) == (true != false))?
  • @user3580294 你什么意思?我尝试了 stk.equals('(') stk.equals("(") none 似乎工作的多种变体
  • @BoristheSpider stk.empty() 不使用布尔值吗?我认为这会更容易编写和查看。
  • @user2920249 这是因为在这些情况下,您将 堆栈"(" 进行比较,而不是 stk.peek()。堆栈显然不等于String。你想要stk.peek().equals("(")

标签: java stack peek


【解决方案1】:

试试这个。这应该可以做到,并且风格更好。

if (stk.empty() || "(".equals(stk.peek())){
    stk.push(post.get(i));     
    System.out.println("Test1:" + stk.peek());
}

【讨论】:

  • 这让我更接近了。它修复了这部分代码的问题。我要在其他人身上试试。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多