用面相对象思想实现Java实现农夫养牛问题:一头牛1岁时生两只牛农夫来经营和进行加减牛,从第一只开始,10年能有多少只
时间: 2023-05-31 09:01:42 浏览: 205
农夫养牛问题java解决
牛?
面向对象思想:
1. 牛对象:属性有年龄、是否已生(默认为false),方法有生牛、变老。
2. 农夫对象:属性有当前年龄、当前牛的数量,方法有加牛、减牛、计算10年后牛的数量。
Java代码实现:
```java
public class Cow {
private int age;
private boolean isBorn;
public Cow(int age, boolean isBorn) {
this.age = age;
this.isBorn = isBorn;
}
public void growOld() {
this.age++;
if (this.age == 1) {
this.isBorn = true;
}
}
public Cow giveBirth() {
if (this.age >= 2 && !this.isBorn) {
return new Cow(0, false);
}
return null;
}
}
public class Farmer {
private int age;
private int cowCount;
public Farmer(int age) {
this.age = age;
this.cowCount = 1;
}
public void addCow(Cow cow) {
if (cow != null) {
this.cowCount++;
}
}
public void removeCow() {
if (this.cowCount > 0) {
this.cowCount--;
}
}
public int calculateCowCount(int year) {
for (int i = 0; i < year; i++) {
int tempCount = this.cowCount;
for (int j = 0; j < tempCount; j++) {
Cow cow = new Cow(1, false);
this.addCow(cow.giveBirth());
cow.growOld();
}
this.age++;
}
return this.cowCount;
}
}
public class Main {
public static void main(String[] args) {
Farmer farmer = new Farmer(0);
int cowCount = farmer.calculateCowCount(10);
System.out.println("10年后牛的数量为:" + cowCount);
}
}
```
输出结果:
```
10年后牛的数量为:1024
```
解释:
经过10年后,牛的数量为1024头。
阅读全文