我尝试过很多不同的东西来尝试打印这个堆栈,但它会继续打印哈希码,即。问题1 $ @节点3d4eac69。我在网上搜索了很多,发现没有任何效果,所以如果有任何建议,我们非常感谢帮助。
import java.util.*;
public class Problem1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// Reading the first integer containing the number of test queries
int N = input.nextInt();
// Initializing the maximum value
int max = Integer.MIN_VALUE;
// Initializing the stack.
Stack<Node> stack = new Stack<Node>();
// Read the query and perform the actions specified.
for(int i = 0; i < N; i++){
int x = input.nextInt();
if(x == 1){
int value = input.nextInt();
Node n = new Node(value);
stack.push(n);
System.out.println(stack);
}
else if(x == 2){
stack.pop();
}
else if(x == 3){
System.out.println(stack.peek());
}
}
}
static class Node{
int data;
public Node(int data){
this.data = data;
}
}
}
答案 0 :(得分:1)
您需要覆盖toString
类中的默认Node
方法(继承自对象see API here),如下所示:
static class Node {
int data;
public Node(int data){
this.data = data;
}
@Override
public String toString() {
return "Node: "+data;
}
}
当您尝试将对象打印为String时,将使用toString
方法。如果你没有,它将使用Object
那个以这种方式构建字符串的那个
getClass()。getName()+&#39; @&#39; + Integer.toHexString(hashCode()))
并为您提供类似Problem1$Node@3d4eac69