黑马程序员技术交流社区

标题: 大家帮忙看一下,哪里错了,编译不不能通过 [打印本页]

作者: 刘海陆    时间: 2013-4-1 10:48
标题: 大家帮忙看一下,哪里错了,编译不不能通过
本帖最后由 刘海陆 于 2013-4-2 20:40 编辑

代码如下:
class Res{
        private String name;
        private String sex;
        public void set(String name,String sex){
                this.name = name;
                this.sex = sex;
        }
        public void out(){
                System.out.println(name+"----"+sex);
        }

class Input implements Runnable{
        private Res r ;
        Input(Res r){
                this.r = r;
        }
        public void run(){
                int x = 0;
                while(true){
                        if(x==0)
                                r.set("张飒","女女女女");
                        else
                                r.set("Angel","female");
                        x= (x+1)%2;
                }               
        }
}

class Output implements Runnable{
        private Res r ;
        Output(Res r){
                this.r = r;
        }
        public void run(){
                r.out();
        }
}

}
class InputOutputDemo {
        public static void main(String[] args) {
                Res r = new Res();
                new     Thread(new  Input(r) ).start();
                new     Thread(new  Output(r) ).start();
        }
}

编译报错信息:

InputOutputDemo.java:50: 找不到符号
符号: 类 Input
位置: 类 InputOutputDemo
                new     Thread(new  Input(r) ).start();
                                    ^
InputOutputDemo.java:51: 找不到符号
符号: 类 Output
位置: 类 InputOutputDemo
                new Thread(new  Output(r) ).start();
                                ^
2 错误

就是代码中红色标记的两个语句,怎么会找不到符号呢,明明已经定义了类和构造函数哦!!!




作者: 刘松老师    时间: 2013-4-1 11:00
你把Input类和Output类写到了Res类中,编译当然会报错了,修改如下:
package com.liangxi;

class Res{
    private String name;
    private String sex;
    public void set(String name,String sex){
            this.name = name;
            this.sex = sex;
    }
    public void out(){
            System.out.println(name+"----"+sex);
    }
}
class Input implements Runnable{
    private Res r ;
    Input(Res r){
            this.r = r;
    }
    public void run(){
            int x = 0;
            while(true){
                    if(x==0)
                            r.set("张飒","女女女女");
                    else
                            r.set("Angel","female");
                    x= (x+1)%2;
            }               
    }
}

class Output implements Runnable{
    private Res r ;
    Output(Res r){
            this.r = r;
    }
    public void run(){
            r.out();
    }
}


class InputOutputDemo {
    public static void main(String[] args) {
            Res r = new Res();
            new Thread(new Input(r)).start();
            new Thread(new Output(r)).start();
    }
}
作者: 刘松老师    时间: 2013-4-1 11:00
你把Input类和Output类写到了Res类中,编译当然会报错了,修改如下:
package com.liangxi;

class Res{
    private String name;
    private String sex;
    public void set(String name,String sex){
            this.name = name;
            this.sex = sex;
    }
    public void out(){
            System.out.println(name+"----"+sex);
    }
}
class Input implements Runnable{
    private Res r ;
    Input(Res r){
            this.r = r;
    }
    public void run(){
            int x = 0;
            while(true){
                    if(x==0)
                            r.set("张飒","女女女女");
                    else
                            r.set("Angel","female");
                    x= (x+1)%2;
            }               
    }
}

class Output implements Runnable{
    private Res r ;
    Output(Res r){
            this.r = r;
    }
    public void run(){
            r.out();
    }
}


class InputOutputDemo {
    public static void main(String[] args) {
            Res r = new Res();
            new Thread(new Input(r)).start();
            new Thread(new Output(r)).start();
    }
}
作者: 刘海陆    时间: 2013-4-1 11:06
哦哦,知道了,谢谢哦
作者: 刘策    时间: 2013-4-1 11:07
你那个Res的类少个  }  所以就找不到,你把 } 放到了下面来了,我不太清楚你的意思,你是想调用内部类吗,还是让这三个类独立运行呀,
如果你是想让它们独立运行的话,就把InputOutpuDemo上的} 移上去,如果你要是使用内部类话就改一下: new Thread(new  Res().new Input(r) ).start();
                new Thread(new Res().new  Output(r) ).start();
作者: 刘海陆    时间: 2013-4-1 11:12
刘策 发表于 2013-4-1 11:07
你那个Res的类少个  }  所以就找不到,你把 } 放到了下面来了,我不太清楚你的意思,你是想调用内部类吗, ...

谢谢了,我正在看看毕老师的视频,写线程间的通讯的代码




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2