问题描述
==================
农场一头小母牛,每年生头小母牛,母牛五岁产母牛,二十年后有多少牛?
代码实现
==================
package com.cow.entity;
/**
* 母牛类
* @author Tanliwei
*/
public class Cow {
private int age;
private boolean firtility;
public Cow() {
}
public Cow(int age, boolean firtility) {
this.age = age;
this.firtility = firtility;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
// 大于五岁的牛可以进行生育
if (!firtility && age >= 5) {
this.setFirtility(true);
}
}
public boolean isFirtility() {
return firtility;
}
public void setFirtility(boolean firtility) {
this.firtility = firtility;
}
}
package com.cow;
import java.util.ArrayList;
import java.util.List;
import com.cow.entity.Cow;
/**
* 生产类
* @author Tanliwei
*/
public class Producer {
private int years = 20; // 生产年限
private int amount; //牛的数量
/**
* 母牛进行繁殖
*/
public List produce(){
List<Cow> cows = new ArrayList<Cow>();
//初始化 农场有一头可以生育的母牛
cows.add(new Cow(5,true));
amount += 1;
for(int i = 0; i < years; ++i){
pastAYear(cows);
}
return cows;
}
/**
* 一年以后的母牛群
* @param cows
* @return
*/
public List<Cow> pastAYear(List<Cow> cows){
Cow calf; //新生小牛
Cow term; //一群母牛中的一只
int currentAmount = cows.size(); //当前母牛的数量
for(int i = 0; i < currentAmount; ++i){ //母牛成长、生育,不包括新生的小牛
term = cows.get(i);
//这头母牛可以生育
if(term.isFirtility()){
calf = new Cow(1,false);
cows.add(calf);
amount += 1;
}
//母牛的年龄加一
term.setAge(term.getAge()+1);
}
return cows;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public int getYears() {
return years;
}
public void setYears(int years) {
this.years = years;
}
}
package com.cow;
import java.util.List;
import com.cow.entity.Cow;
/**
* @author Tanliwei
*/
public class TestClass {
public static void main(String[] args) {
Producer producer = new Producer();
List<Cow> cows = producer.produce();
System.out.println("母牛总数:" + producer.getAmount());
}
}
分享到:
相关推荐
“农场与母牛”可能是一个关于面向对象编程(OOP)的例子。在这个场景下,我们可以创建“农场”和“母牛”类,每个类都有自己的属性(如农场的面积、母牛的数量)和方法(如母牛的喂养、产奶等行为)。OOP的基本...
这个项目对学习者来说是一个很好的实践机会,可以加深对Java面向对象编程、事件处理机制、Swing GUI组件以及逻辑判断的理解。通过阅读和修改源码,学习者可以逐步提升自己的编程技能。 总结,"BullsAndCows"游戏...
游戏的代码实现主要采用C++,这是一种静态类型的、编译式的面向对象编程语言,以其高效、灵活和强大的功能深受游戏开发者喜爱。C++允许开发者直接操作内存,进行低级别的优化,这对于性能敏感的游戏开发至关重要。...
【标题】"公牛队:Известнаяигра,вы...通过这个项目,学习者可以了解到C++语言的应用,以及如何使用面向对象编程方法设计和实现一个简单的游戏。同时,这也是一个实践编程技巧和理解游戏逻辑的好机会。
《BullsCows:猜数字游戏的C++实现...这不仅是一个有趣的编程挑战,也是一个学习面向对象编程和算法的好例子。在实际编写代码时,应考虑代码的可读性、效率以及错误处理,这些都是成为一名优秀C++程序员所必需的素养。
下面我们将详细讨论如何用Java实现这个游戏: 1. **游戏逻辑**:首先,我们需要定义游戏的基本规则,包括秘密数字的位数、允许的最大猜测次数以及公牛和母牛的计算逻辑。这些可以通过Java的条件语句(if-else)和...
这个练习通常涉及到算法设计、逻辑思维以及字符串操作,学员需要编写一个程序,实现经典的猜数字游戏——“Bulls and Cows”。在这个游戏中,一个人想出一个秘密数字,然后其他人尝试猜测,每次猜测后,会得到关于...
C++是面向对象的编程语言,以其高效性、灵活性和丰富的库支持而被广泛应用在游戏开发中。在公牛和牛游戏的实现过程中,C++主要负责游戏逻辑的编写,包括单词数据库的管理、提示生成算法、以及与用户交互的接口。例如...
- 第21题:此题属于算法问题,通常需要编写一个递归函数来计算特定年份内母牛及其后代的数量,考虑到年龄限制和每年新生小牛的情况。 以上是对PHP工程师面试笔试真题的详细解析,涵盖PHP基础语法、数组操作、字符...