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 разных модуля для стека и Ctrl.
Возможно, вы ошибочно перехватили новый объект Stack? –
есть проблема в вашем коде, в методе push, приращение nrElem должно быть после назначения, или 'this.Sarray [this.nrElem ++] = x', но нам нужно увидеть все другие методы, чтобы увидеть, где ошибка , вы не показали findById – RamonBoza
@RamonBoza обновлен с помощью 'findById()' – Matt