java求助(急)
通常每两个泵站之间需要建立一座水库为中转,低处泵站讲水抽到中转水库,再由高处水泵站向更高得中
转水泵抽水,设有泵站A,B和中转水库C,泵站设水位低于允许最低水位,禁止高处泵站抽水。
请用面向对象方法设计一个仿真程序,要求:
1。两座泵站在随机时间,以随机时间长度,随机台抽水机抽水或注水
2。水库根据自身容量允许或禁止泵站抽水,以保证自身处于安全水位
3。泵站即使在允许抽、注水条件下,依然可根据自身状态(如高/低处水库水位情况)选择抽水/注水,
由于只考虑两个泵站一个水库,此功能由随机数实现
参考答案:有几个月没来了
今天上来查点东西
随便帮人答几道题
时间比较紧,条理不太清
自己再完善一下吧
运行成功
import java.util.*;
class PoolC
{
private int water=500;
int pushWater()
{
Random rd=new Random();
water=water+(rd.nextInt()>>>1)%600;
return water;
}
int popWater()
{
Random rd=new Random();
water=water-(rd.nextInt()>>>1)%600;
return water;
}
public void isAllow()
{
if(water<50)
{System.out.println("水库水位过底,禁止抽水!");}
if(water>=1000)
{System.out.println("水库超过警戒水位,禁止注水!");}
}
};
class stateA implements Runnable
{
private PoolC p;
int downwater;
public stateA(PoolC p)
{
this.p=p;
}
public void run()
{
while(true)
{
Random rd=new Random();
downwater=(rd.nextInt()>>>1)%1000;
try{
Thread.sleep(1000);
}
catch(Exception e){}
p.isAllow();//下层水库是否允许抽水
if(downwater<50)
{
System.out.println("下层水库水位过底,禁止抽水!");
}
else
{
p.pushWater();
System.out.println("泵站A注水中。");
}
}
}
};
class stateB implements Runnable
{
private PoolC pb;
int upwater;
public stateB(PoolC pc)
{
this.pb=pc;
}
public void run()
{
Random rd=new Random();
upwater=(rd.nextInt()>>>1)%1000;
while(true)
{
try{
Thread.sleep(1000);
}
catch(Exception e){}
pb.isAllow();//上层水库是否允许注水
if (upwater>1000)
{
System.out.println("上层水库超过警戒水位,禁止注水!");
}
else
{
pb.popWater();
System.out.println("泵站B抽水中。");
}
}
}
};
class RunPool
{
public static void main(String args[])
{
PoolC pc=new PoolC();
stateA as=new stateA(pc);
stateB bs=new stateB(pc);
Thread a=new Thread(as);
Thread b=new Thread(bs);
a.start();
b.start();
};
};