这是我的Java代码,用于创建堆栈并从堆栈中弹出一个节点。但是当我将节点添加到Node[]
时,我打印到屏幕时得到的值是: [LMyStack.Node; @ addbf1 。
我不知道是什么问题。有什么帮助吗?
public class MyStack{
private Node[] values;
public MyStack(){
}
public MyStack(Node[] values){
this.values=values;
}
//pop one Node from Stack
public Node pop(){
Node result=null;
if(values!=null && values.length-1>0){
result = values[values.length-1];
Node[] temp = new Node[values.length-1];
for(int i=0;i<values.length-1;i++){
temp[i]=values[i];
}
this.values=temp;
//Print the stack to screen
System.out.println("The stack is:"+this.value);
}
return result;
}
}
class Node {
private int value;
public Node(){
value=0;
}
public Node(int value){
this.value=value;
}
}
class Result{
public static void main(String []args){
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
//Here is problem
Node[] n = {node1, node2, node3};
//System.out.println("Node is: "+n[1] );
MyStack stack = new MyStack(n);
stack.pop();
}
}
答案 0 :(得分:0)
Stack Overflow上有很多例子。请记得先搜索一下!
您所看到的是在Node对象数组上调用的默认toString()
方法。 [LMyStack.Node
表示节点实例数组,addbf1
表示哈希码的十六进制表示。使用循环:
for (Node node : values) {
System.out.println(node);
}
答案 1 :(得分:0)
System.out.println(&#34;堆栈是:&#34; + this.value);默认情况下将被视为System.out.println(&#34;堆栈为:&#34; + this.value.toString());在运行时返回classname @ hashcode
toString()
中的默认Object
实施调用它..
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}