0

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

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

如果我将 int 更改为 String 它会抛出一个空指针异常。谢谢。

4

3 回答 3

1

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

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

于 2012-03-26T08:20:44.383 回答
0

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

它看起来像这样:

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

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

于 2012-03-26T08:39:25.907 回答
0

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

于 2012-03-26T08:37:42.037 回答