2015-11-05 175 views
0

为了制作计算数学表达式的程序,我制作了一个使用java泛型的堆栈。myArraylist.size()找不到符号错误Java

下面是叠层的代码:

import java.util.ArrayList; 
public class Stack<T> 
    { 
    private ArrayList<T> stack; 

    public Stack() 
    { 
     stack = new ArrayList<T>(); 
    } 

    public void push(T item) 
    { 
     stack.add(item); 
     System.out.println(item); 
    } 

    public T pop() 
    { 
     T last; 
     last = stack.remove((stack.size() - 1)); 
     System.out.println(last); 
     return(last); 
    } 

    public boolean isEmpty() 
    { 
     return stack.isEmpty(); 
    } 
} 

但是当我尝试这样做:

Stack<Integer> number = new Stack<Integer>(); 

在另一个类中,其计算表达式

,然后用它做如下:

if(number.size()>=2) 
{ 
    //calculation 
} 

因为我有一个ArrayList,我得到的错误:canot在number.size()中查找符号,你能帮助我吗?

+1

一个堆栈不是一个数组列表,你的数字变量的类型是stack,而不是List。 – Stultuske

+0

Stack不包含任何成员'size'。我不明白你的困惑来自哪里。 –

+0

我没有在堆栈中实现size()方法,这是问题所在。 – Bill

回答

0
public class Stack<T> 

没有size()方法。你需要一个教学贯彻这样

public int size() { 
    return stack.size(); 
} 
+0

是的,工作,谢谢! – Bill

0

你要实现你的Stack类的size()方法。

public class Stack<T> { 
    ... 

    public int size() { 
     return this.stack.size(); 
    } 

    ... 
}