public class Stack {
Student Sarray[] = new Student[1000];
int nrElem=0;
public Student[] getAll(){
return this.Sarray;
}
public void push(Student x){
this.nrElem++;
this.Sarray[this.nrElem]=x;
}
}
我嘗試手動實現一個堆棧,我有一個小問題。我插入的第一個元素存儲並替換,當我插入另一個。我做錯了什麼?堆棧模擬不存儲元素
public class Ctrl {
Stack x = new Stack();
public void addC(Student s){
if(findById(s.getId()) != null) {
System.out.println("Err!Duplicate id!/n");
} else {
if(s.getGrade()>10)
System.out.println("Err!Grade bigger than 10!/n");
else{
x.push(s);
}
}
}
public Student findById(int id){
Stack y=new Stack();
y=x;
Student z= new Student() ;
for(int i=1;i<=y.getNrElem();i++){
z=y.pop();
if (z.getId()==id)
return z;
}
return null;
}
2個不同的Stack和Ctrl模塊。現在
Stack y=new Stack(); // creates new reference to new Stack ...
y=x; // reference is redirected to point to the class's Stack instance
Ÿ指向類成員X,你在彈出for循環follwing空:
也許你是錯誤地停止一個新的Stack對象? –
你的代碼存在問題,在push方法中,nrElem的增量必須是在賦值後,或者thisSarray [this.nrElem ++] = x',但是我們需要查看所有其他方法來查看錯誤在哪裏,你沒有顯示findById – RamonBoza
@RamonBoza更新了'findById()' – Matt