A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨立考 中级黑马   /  2012-10-10 23:05  /  1341 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

帮忙看下  下面标红的是命令行里面提示的问题描述,怎么解决啊?
class Demo2
{
public static void main(String[] args)
{
  ZiYuan zy=new ZiYuan();
  XiaoFei xf=new XiaoFei(zy);
  ShengChan sc=new ShengChan(zy);
  Thread th1=new Thread(xf);
  Thread th2=new Thread(sc);
  th1.start();
  th2.start();

}
}
class ZiYuan
{
private String name;
private int Num1=1;
private int Num2=2;
private boolean flag;
public synchronized void XF(String name)
  {
   if(flag)
    {
     try{this.wait();}catch(InterruptedException e){}
    }
    this.name=name;
    System.out.println(Thread.currentThread().getName()+"生产产品"+this.name+(Num1++));
    flag=true;
    this.notify();
  }
public synchronized void SC(String name)
  {
   if(!flag)
    {
     try{this.wait();}catch(InterruptedException e){}
    }
   
    System.out.println(Thread.currentThread().getName()+"消费产品"+this.name+(Num2++));
   
    flag=false;
    this.notify();
  }
}
class XiaoFei implements Runnable
{
private ZiYuan r;
public XiaoFei(ZiYuan r)
  {
   this.r=r;
  }
public void run()
  {
   while (true)
   {
    r.XF("馒头");
   }
  }
}
class ShengChan implements Runnable
{
private ZiYuan r;
public ShengChan(ZiYuan r)
  {
   this.r=r;
  }
public void run()
  {
   while (true)
   {
    r.SC();//提示无法将ZiYuan 中的 SC<java.lang.String>应用于<>   r.SC();
   }
  }
}

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

3 个回复

倒序浏览
r.SC();改成r.sc(“馒头")  你调用这个方法的时候,这个方法要传入参数的······
回复 使用道具 举报
沈佳龙 发表于 2012-10-10 23:22
r.SC();改成r.sc(“馒头")  你调用这个方法的时候,这个方法要传入参数的······ ...

不行 那里不可以传参  命令行里运行会出现问题
回复 使用道具 举报
public synchronized void SC(String name)
这是你定义的方法,定义函数需要考虑两个方面:1.参数  2.返回值     你在这个方法里定义了形参即(String name)
当其他对象在调用时比如  你所说的r.SC()  里面就要传入一个实参 ,比如r.SC("你好,考拉兄") ,此时 这个实参只要是字符串类编译通过,控制台就不会报上述红色标记的错误

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马