【问题标题】:String Peek( ) method in a Stack in javajava中Stack中的String Peek()方法
【发布时间】:2012-03-26 08:03:42
【问题描述】:

我正在用 Java 做一个字符串类型的堆栈,我想知道 peek 方法如何。这是我的 peek 但 int 类型:

public int Peek()
{
   NodoOperaciones nodo;
   int dato;
   nodo = getCabeza();
   dato = nodo.getData();
   return dato;
}

如果我将 int 更改为 String,则会引发空指针异常。谢谢。

【问题讨论】:

  • 从哪里获得 NPE?除此之外,在相关位置将类型更改为String 应该可以。因此,我们需要有关您遇到的错误的更多信息。
  • 它是从dato=nodo.getData(); 还是从nodo=getCabeza(); 抛出NullPointerException?
  • @RonK 它从 dato=nodo.getData() 行抛出它
  • 如果可能的话,输入英文var+方法名。你想在这里问什么真的很模糊。

标签: java stack peek


【解决方案1】:

它从 dato=nodo.getData() 行抛出它

在这种情况下,nodo.getData() 返回 null。 String 可以有 null,所以它不会抛出异常,但 int 类型不能有 null。

【讨论】:

    【解决方案2】:

    getCabeza() 方法返回 null。如果没有 NULL 检查,您正在执行 nodo.getData()。此时抛出 NPE 异常。这会发生在 String 的情况下,但是当你有 int 原始类型时,你不能有 null ,默认情况下 int 总是 0。

    【讨论】:

      【解决方案3】:

      使用标准 java.util.Stack 怎么样?它已经实现了 peek() 方法,不需要再发明自行车了。

      看起来像这样:

          Stack<String> stack = new Stack<String>();
          stack.push("hello");
          System.out.println(stack.peek()); // result = hello
      

      在这种情况下,堆栈中仍然有元素“hello”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-20
        • 2014-11-24
        • 2018-09-01
        • 2016-01-06
        • 1970-01-01
        • 1970-01-01
        • 2010-12-18
        相关资源
        最近更新 更多