2017-02-25 29 views
0

我的CirculaList类中的原始toString方法工作正常。但是,当我在我的堆栈类中的toString方法中调用它时,它返回我认为是我的堆栈的内存位置。我试过超载,但没有区别。Java自定义字符串返回内存位置

我的代码:

CircularList类

public class CircularList{ 
private Node tail = null; 
public void addToFront(int elem){ 
    if(elem >= 0){ 
     Node newNode= new Node(elem); 
     if(tail != null){ 
      newNode.next = tail.next; 
      tail.next = newNode; 
     }else{ 
      tail = newNode; 
      newNode.next = newNode; 
     } 
    } 
} 

public int deleteFromBack(){ 
    int returned = -1; 
    if(tail != null){ 
     Node trav = tail; 
     while(trav.next != tail){ 
      trav = trav.next; 
     } 
     returned = tail.data; 
     if(trav.next == trav){ 
      tail = null; 
     }else{ 
      trav.next = tail.next; 
      tail = trav; 
     } 
    } 
    return returned; 
} 
//@Override 
public String toSting(){ 
    String stg = null; 
    stg = "["; 
    Node trav = tail.next; 
    while(trav != tail){ 
     stg += trav.getData() +","; 
     trav = trav.next; 
    } 
    stg += trav.getData() + "]"; 
    return stg; 
} 

public CircularList clone(CircularList other){ 
    tail = other.tail; 
    return this; 
} 

} 

Stack类

public class Stack{ 
private CircularList list = new CircularList(); 

public void push(int elem){ 
    list.addToFront(elem); 
} 

public int pop(){ 
    CircularList tempList = new CircularList(); 
    int keeper = -1; 
    if(isEmpty() != true){ 
     keeper =list.deleteFromBack(); 
     while(isEmpty() != true){ 
      tempList.addToFront(keeper); 
      keeper =list.deleteFromBack(); 
     } 
     list.clone(tempList); 
    } 
    return keeper; 
} 

public int peek(){ 
    CircularList tempList = new CircularList(); 
    int keeper = -1; 
    if(isEmpty() != true){ 
     while(!isEmpty()){ 
      keeper = list.deleteFromBack(); 
      tempList.addToFront(keeper); 
     } 
     list.clone(tempList); 
    } 
    return keeper; 
} 



public boolean isEmpty(){ 
    CircularList tempList = new CircularList(); 
    int keeper = -1; 
    keeper = list.deleteFromBack(); 
    if(keeper==-1){ 
     return true; 
    }else{ 
     while(keeper!=-1){ 
      tempList.addToFront(keeper); 
      keeper = list.deleteFromBack(); 
     } 
     list.clone(tempList); 
    } 
    return false; 
} 

public Stack clone(Stack other){ 
    list = other.list; 
    return this; 
} 
//@Override 
public String toSting(){ 
    String stg = list.toString(); 
    return stg; 
} 

} 

Tester类(正如其名称所表明,它纯粹是为了测试)

public class Tester{ 
public static void main(String[] args) 
{ 
    CircularList list = new CircularList(); 

    System.out.println("CircularList"); 
    System.out.println("========="); 
    list.addToFront(1); 
    list.addToFront(2); 
    list.addToFront(3); 
    list.addToFront(4); 
    list.addToFront(5); 
    System.out.println(list.toSting()); 
    System.out.println("========="); 

    System.out.println("removing: " + list.deleteFromBack()); 
    System.out.println("========="); 

    System.out.println(list.toSting()); 
    System.out.println("====================================================="); 

    System.out.println("stack"); 
    System.out.println("========="); 
    Stack stack = new Stack(); 

    System.out.println(stack.isEmpty()); 

    System.out.println("========="); 

    stack.push(1); 
    stack.push(2); 
    stack.push(3); 
    stack.push(4); 
    stack.push(5); 
    System.out.println(stack.toString()); 
    System.out.println(stack.isEmpty()); 
    System.out.println("========="); 
    System.out.println("first int: " + stack.peek()); 
    System.out.println("========="); 
    System.out.println("Removing: " + stack.pop()); 
    System.out.println(stack.isEmpty()); 
} 
} 

输出(等于取出作为它们与布局搞乱) CircularList

[5,4,3,2,1]

除去:1

[ 5,4,3,2]

堆栈@ 15db9742 假

第一INT:5

卸下:5 假

+2

'toSting'不是'toString' –

+0

错字:toSting()! –

+0

我问三个其他人的帮助。没有任何一个人能够找到这个。谢谢。 –

回答

0

toSting()已被用来代替的toString(),因此对象类的toString()被调用。
@Override在这种情况下很有用,它试图告诉我们在重写方法时我们犯了一些错误。
在评论@Override之前总是会有所帮助。

相关问题