废话不多说,直接上肝货,可运行。

代码简陋,逻辑关系可能还不是很严谨,欢迎交流。

 public class Owner {
//属性部分
//狗主人肯定有一条狗,这条狗可以被别的主人检查,所以设置为public
//但是这条狗的生病状态,狗主人看不到
public Dog dog; //因为有很多主人,所以单个主人应该有一个自己的编号,
public int ownerCode; //发现其他狗里生病的狗的数量,因为信息不能共享,所以这个属性是私有的
private int sickDogRecord = 0; //自己的狗是否生病,生病为true,没有生病为false
public boolean dogIsSick; //方法部分
//狗主人可以检查其他狗主人的狗
public void checkDog(Dog otherOwnerDog){
//如果这条狗有病,sickDog++;
if(otherOwnerDog.sick){
this.sickDogRecord++;
}
}
//狗主人判断自己的狗是否生病
public void IsSick(int day, Info info){
//第一天,如果record为0,那么自己的狗肯定是病狗,执行送医的方法,全局变量treat++,结束循环
//如果record不是0,那么自己的狗有可能不是病狗,进入第二天的循环
//第二天,如果record为1;那么第一遍循环之后,treat应该为1,此时判断全局变量treat是否为0,
//如果是0,则自己的狗是病狗,执行送医,treat++,结束循环
//如果record不是1,那么自己的狗有可能不是病狗,进入下一轮循环
//第三天,如果record为2;那么第二遍循环之后,treat应该为2,此时判断全局变量treat是否为0,
//如果是0,则自己的狗是病狗,执行送医,treat++,结束循环
//如果record不是2,那么自己的狗有可能不是病狗,进入下一轮循环
//依次类推...
if(sickDogRecord==day-1){
dogIsSick = true;
sendDogToHospital(dog);
info.treat++;
}
//return dogIsSick;
}
//杀狗
public void sendDogToHospital(Dog myselfDog){
//调用狗的被送医方法
//临时找来一个工具将狗送医
Tool tool= new Tool();
myselfDog.beSendHospital(tool);//传入一个送医的工具对象
this.dog = null;
} public Owner(){ }
//构造方法重载
public Owner(Dog dog, int code, boolean sick){
this.dog = dog;
this.ownerCode = code;
this.dogIsSick = sick;
}
}

Class Owner

 public class Dog {
//属性部分
//疾病状态,有没有生病,生病了是true,没有生病是false
boolean sick;
//多少主人,就有多少条狗,狗也有编号
public int dogCode;
//方法部分
//狗被送医
public void beSendHospital(){
System.out.println(this.dogCode+"号狗被送去医院。");
}
//狗被送医 重载
public void beSendHospital(Tool tool){
System.out.println(this.dogCode+"号狗被主人用"+tool.car+"送去医院。");
}
public Dog(){ }
//构造函数重载
public Dog(boolean sick, int code){
this.sick = sick;
dogCode = code;
}
}

Class Dog

 public class Info {
public int treat = 0;//送医救治的病狗数量
}

Class Info

 public class Tool {
String car = "一辆柯尼塞格";
}

Class Tool

 public class Test{
public static void main(String[] args){
//构建一个存储信息的对象
Info info = new Info(); //构建一个owner的数组,内含50个元素
Owner owner[] = new Owner[50];
//对50个owner初始化,并随机生成>=1且<=50的随机病狗数
//(暂时先指定为3只病狗)
int assum = 5;
for(int i = 0; i < owner.length; i++){
if(i<assum){//构建3只病狗
owner[i] = new Owner(new Dog(true, i+1), i+1, false);
continue;
}
owner[i] = new Owner(new Dog(false, i+1), i+1, false);
} //让每个owner遍历其他owner获取观察的病狗数量
for (int i = 0; i < owner.length; i++) {
for (int j = 0; j < owner.length; j++) {
if(i==j){
continue;
}
owner[i].checkDog(owner[j].dog);
}
} //进入推理循环
//设置天数
int day = 1;
while(info.treat==0){//如果还没有狗被治疗
//每个owner做一次推理
for (int i = 0; i < owner.length; i++) {
owner[i].IsSick(day, info);
}
//然后判断treat是否变化,如果变化了,就说明有狗被送医,循环结束
//如果treat还是0,说明还没有狗被送医,继续循环
if(info.treat!=0){
break;
}
System.out.println("在第"+day+"天有"+info.treat+"只狗被送医治疗");
//继续循环,天数加1
day++;
}
//最后打印结果
System.out.println("在第"+day+"天有"+info.treat+"只狗被送医治疗");
}
}

Class Test

可以改的变量有很多,有更好的代码表述的逻辑推理过程希望能给我留言,让我改正!

最新文章

  1. ES6 - Note3:数组、对象与函数的扩展
  2. 学习Java,还需要学好哪些知识
  3. Android 抗锯齿的两种方法
  4. HTTP协议学习---(二)基本认证
  5. am等adb命令小总结
  6. db2权限控制(转)
  7. Chapter 3 Discovering Classes and Object
  8. 使用ajax技术无刷新动态调用股票信息
  9. cmd 命令收集
  10. mybatis源码分析(3)——SqlSessionManager类
  11. C# 用模板生成静态页
  12. hdu_5878_I Count Two Three(预处理)
  13. Linux批量处理文件脚本
  14. HIT2019春软件构造-&gt;Git&amp;Github学习笔记
  15. node.js之十大Web框架
  16. soapUI工具使用方法、简介、接口测试
  17. Python内置类型——list
  18. main.jsbundle 脱离掉本地服务
  19. info AI drive
  20. tomcat APR的配置

热门文章

  1. UFUN函数 UF_CSYS函数 UF_MTX函数(如何创建坐标系);
  2. ArrayList :货物库存管理(遍历)
  3. luogu_2605: 基站选址
  4. RFM - Customer Level Data
  5. Xml与Map之间的相互转换
  6. MySQL性能优化 分区
  7. SpringBoot升级报错:Failed to bind properties under &#39;logging.level&#39;
  8. Unknown column &#39;startname&#39; in &#39;field list
  9. JPA的动态查询拼接
  10. 【用例篇】Xmind转为csv 导入禅道