你如何用Java打印堆栈?

时间:2018-04-09 19:01:32

标签: java printing stack

我尝试过很多不同的东西来尝试打印这个堆栈,但它会继续打印哈希码,即。问题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;
    }
}    

}

1 个答案:

答案 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

的内容