2017-02-25 43 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之前總是會有所幫助。

相關問題