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 假
'toSting'不是'toString' –
錯字:toSting()! –
我問三個其他人的幫助。沒有任何一個人能夠找到這個。謝謝。 –