zoukankan      html  css  js  c++  java
  • 农场有头大母牛,每年生头小母牛,小母牛五年后生小母牛,问20年后农场一共有多少头牛?(用面向对象的思想)

    笔试题

    代码如下:

    package cn.edu.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 农场有头大母牛,每年生头小母牛,小母牛五年后生小母牛,问20年后农场一共有多少头牛?(用面向对象的思想)
     * 采用面向对象的思想:农场是一个对象,农场这个对象里存放着母牛,该对象应该提供一个方法用于统计N年后农场的母牛的总数。
     * 母牛也是一个对象,母牛这个对象里有一个年龄属性,该对象有生长的方法以及生育的方法。
     * 
     * @author YCY
     * 
     */
    class Cow {
    	private int age;
    
    	public Cow(int age) {
    		this.age = age;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	/*
    	 * 每年长大一岁
    	 */
    	public void grow() {
    		this.age++;
    	}
    
    	/*
    	 * 母牛生小牛,如果年龄达到5岁,则可以每年都生一头小母牛,反之,则不能生育,返回null
    	 */
    	public Cow generation() {
    		if (this.age >= 5)
    			return new Cow(0);
    		return null;
    	}
    }
    
    class Farm {
    	// cows集合存放所有母牛对象
    	private List<Cow> cows = new ArrayList<Cow>();
    
    	public List<Cow> getCows() {
    		return cows;
    	}
    
    	public void setCows(List<Cow> cows) {
    		this.cows = cows;
    	}
    
    	/*
    	 * 第N年后农场的牛的数量
    	 */
    	public int getCowNum(int year) {
    		// children集合存放每年所有母牛生的小母牛对象
    		List<Cow> children = new ArrayList<Cow>();
    		for (int i = 0; i < year; i++) {
    			for (Cow c : cows) {
    				c.grow();
    				Cow cc = c.generation();
    				if (cc != null) {// 如果该母牛可以产仔了,则将其产的小母牛加入children集合中
    					children.add(cc);
    				}
    			}
    			cows.addAll(children);// 将整个小母牛集合加入所有母牛的集合中
    			children.clear();// 每年过后将children集合清空
    		}
    		return cows.size();
    	}
    
    }
    
    public class MyTest {
    
    	public static void main(String[] args) {
    		Farm farm = new Farm();
    		// 首先创建一个已经可以产仔的母牛对象
    		Cow c = new Cow(5);
    		// 将这个母牛添加到农场中
    		farm.getCows().add(c);
    		int num = farm.getCowNum(20);// 20年后农场的牛的总数
    		System.out.println(num);// 结果:431
    	}
    }


  • 相关阅读:
    浅谈页面中的焦点
    简单的jQuery幻灯片实现
    从is(":checked")说起
    通过Javascript得到URL中的参数(query string)
    Javascript设置对象属性为"只读"
    Javascript判断两个日期是否相等
    利用HttpWebRequest访问WebApi
    利用Newtonsoft.Json实现Json序列化与反序列化
    在ASP.NET MVC中以post方式传递数组参数的示例
    SQL Server 锁表、查询被锁表、解锁相关语句
  • 原文地址:https://www.cnblogs.com/pangblog/p/3362305.html
Copyright © 2011-2022 走看看