2013-11-21 4 views
0

"PrintAndEmpty"메서드 내에서 스택이 표시되도록 간단한 방법이 있습니까? printAndEmpty 메서드 안쪽에있는 print와 empty가 필요하고 main은 필요하지 않습니다. 코드는 다음과 같습니다Java에서 스택 메서드 만들기

import java.util.*; 
class Stack<E> implements StackInterface<E> { 
private ArrayList<E> items; 

public Stack() { // default constructor; creates an empty stack 
    items = new ArrayList<E>(); // initial capacity is 10 
} 

public Stack(int initialCapacity) { 
//one argument constructor, creates a stack with initial capacity initialCapacity 
    items = new ArrayList<E>(initialCapacity); 
} 

public void push(E x) { 
    items.add(x); //uses the ArrayList method add(E o) 
} 

public E pop() { 
    if (empty()) // determine whether or not there is an item to remove 
     return null; 
    return items.remove(items.size()-1); //uses the ArrayList method remove(int n) 
} 

public boolean empty() { 
    return items.isEmpty();//uses the ArrayList method isEmpty() 
} 

public int size() { 
    return items.size(); //uses the ArayList method size() 
} 

public E peek() { 
    if (empty()) // determine whether or not there is an item on the stack 
     return null; 
    return items.get(items.size()-1); //uses the ArrayList method get(int i) 
} 

public void PrintAndEmpty() 
{ 
    // I want to print then empty the stack here, not in the main method. 
} 

Main 메서드

public static void main (String[] args) // for demonstration only 
{ 
    Stack<Student> s = new Stack<Student>(); 
     // push five Student references onto s 
     s.push(new Student("Spanky", "1245")); 
     s.push(new Student("Alfalfa", "1656")); 
     s.push(new Student("Darla", " 6525")); 
     s.push(new Student("Stimie", "1235")); 
     s.push(new Student("Jackie", "3498")); 


     // The data below is what I am trying to put in the PrintAndEmpty method 


     while(!s.empty()) 
     System.out.println(s.pop().getName()); 
     System.out.println(); 
     System.out.println("The size of the stack is now "+s.size()); 

} 

학생 클래스 테스트 목적 :

public class Student 
{ 
private String name; 
private String id; 

public Student() 
{ 
     name = ""; 
     id = ""; 
} 

public Student (String n, String idNum) 
{ 
     name = n; 
     id = idNum; 
} 

public String getName() 
{ 
     return name; 
} 

public String getID() 
{ 
     return id; 
} 

public void setName(String n) 
{ 
     name = n; 
} 

public void setID(String idNum) 
{ 
     id = idNum; 
} 

public boolean equals(Object o) // name and id are the same 
{ 
     return ( (((Student)o).name).equals(name) && 
     (((Student)o).id).equals(id) ); 
} 

}

나는이 점점 늘어나는만큼 모든 아이디어 중입니다 일하다. 누구든지 제안 사항이 있으면 알려 주시기 바랍니다. 나는 그것을 매우 감사 할 것이다!

답변

1

당신이 여기 있음을하기를 원하지만 것 왜 확실하지 당신은 어떻게 할 것입니다 :

// PrintAndEmpty 'this' stack. 
public void PrintAndEmpty() 
{ 
    // The condition to check - e.g. 'this' stack. 
    while(!this.empty()) { 
     // Pop from the stack - e.g. 'this' stack. 
     System.out.println(this.pop().getName()); 
    } 
}