线程里没有实现POP和PUSH这两个方法吧

解决方案 »

  1.   

    老兄的程序中有没有定义这两种方法:pop()、push()?如果没有,并且引入的包中又没有包含它们,自然会说它们:cannot resolve。 在同一程序中引用另一类的方法,一般要实例化类后用“.”引用,但如是static的,似乎可以直接用类名引用,但 是类还是方法是static的,我不太把握。另外可以用匿名类来实现
      

  2.   

    public void push(char c)
    {
    data[p]=c;
    p++;
    }
    public char pop()
    {
    p--;
    return data[p];
    }
    我定义这两个方法了啊
      

  3.   

    //我把你的程序改了改,这回全明白了吧?
    public class TestStack{

    int p = 0;
    char[] data = {'a','b','c','d','e','f'};

    public TestStack(){

    public void push(char c){
    data[p]=c;
    p++;
    }
    public char pop(){
    p--;
    return data[p];
    }
    public static void main(String [] args){
    TestStack ts = new TestStack();
    Thread1 t1 = new Thread1(ts);
    t1.start();
    Thread2 t2 = new Thread2(ts);
    t2.start();
    }
    }class Thread1 extends Thread{
    TestStack ts;
    char s[] = {'o','p','q','r','s','t'};
    public Thread1(TestStack ts1){
    ts = ts1;
    }
    public void run(){
    for (int i = 0; i < 6; i++){
       ts.push(s[i]);
       System.out.println("now is pushing numbers: " + s[i]);
    }
    }
    }class Thread2 extends Thread{
    TestStack ts;
    char s[] = {'u','v','w','x','y','z'};
    public Thread2(TestStack ts2){
    ts = ts2;
    }
    public void run(){
    for (int i = 0; i < 6; i++){
    System.out.println("now is poping numbers: " + ts.pop());
    }
    }
    }
    /*注意:
    1、应给 p 赋初值;
    2、赋值最好全在构造方法中做;
    3、push方法的参数是char型的,你却给她传了一个int;
    4、基于你定义的TestStack类,只能且必须对其实例化的对象进行操作;
    5、你在new两个线程对象时传的参数“T1”、“T2”根本没任何作用(你没有使用它);
    6、在同一个程序中的一个类中调用另一个类的方法:要传给他这个对象的reference.
      

  4.   

    你那3个 Class 都在一个文件里面么?
    pop 和 push 方法都是在TestStack里头定义的
    Thread不能直接用把,先要new 一个 TestStack的instance?
      

  5.   

    comcy(故乡的云) 
    谢谢您,我记住了!!!!