Я унаследовал таблицы классов из класса Java Stack. У меня есть переопределенные методы push и pop этого класса. Так или иначе, при каждом нажатии ничего не добавляется в стеки, показывающие размер() всегда ноль. Пожалуйста, посоветуйте мне все, что могло пойти не так. Прикрепление код:Пользовательский класс стека в java, унаследованный от Stack, всегда остается пустым
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
class Tables extends Stack<Integer>{
boolean full;
int tabCount;
int cleanCount;
Stack<Integer> stack;
public Tables(int n){
tabCount = n;
stack = new Stack<Integer>();
full = false;
cleanCount = 0;
}
@Override
public synchronized Integer pop() {
full = false;
return super.pop();
}
@Override
public Integer push(Integer item) {
System.out.println(" PushStats : "+stack.size()+" "+tabCount +" " + stack.isEmpty());
if(stack.size() == tabCount-1)
{
full = true;
}
cleanCount ++;
return super.push(item);
}
}
public class Main1{
public static void main(String[] args) throws NumberFormatException, IOException{
int n,m,t;
BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));
t = Integer.parseInt(bReader.readLine());//Test Cases
for(int test = 0 ; test <t ; test++){
String holder = bReader.readLine();
String[] temp = holder.trim().split(" ");
n = Integer.parseInt(temp[0]);//Tables
m = Integer.parseInt(temp[1]);//Orders
holder = bReader.readLine();
temp = holder.trim().split(" ");
Integer[] orders = new Integer[m];
for(int i =0; i<m ; i++){
orders[i] = Integer.parseInt(temp[i]);
}
process(n,m,orders);
}
}
private static void process(int n, int m, Integer[] orders) {
Tables tables = new Tables(n);
for(Integer order : orders){
System.out.println(" Order from :"+order+". Stack status :full = "+tables.full);
if(tables.search(order) == -1){
if(tables.full){
System.out.println("Popped out: "+tables.pop());
}
tables.push(order);
}
}
System.out.println("Result : "+ tables.cleanCount);
}
}
какой-то код пожалуйста .... –
Вы переопределили методы 'push' и' pop', поэтому вам нужно опубликовать их, если вы хотите, чтобы мы могли рассказать вам, что не так. – BackSlash
Я уверен, что вы забыли называть 'super.push (T)' и 'super.pop()' в методах переопределения. – matoni