成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

面向?qū)ο笏枷? 解決農(nóng)場(chǎng)母牛生小牛問(wèn)題

waterc / 593人閱讀

摘要:?jiǎn)栴}農(nóng)場(chǎng)一頭小母牛,母牛每年生母牛。母牛歲產(chǎn)母牛,年后多少牛前提第一頭母牛已經(jīng)歲思路脈絡(luò)面向?qū)ο蠡舅枷耄⒁鉅顟B(tài)和行為,抽象出對(duì)應(yīng)的屬性和方法思想考慮類(lèi)母牛農(nóng)場(chǎng)一開(kāi)始可能不會(huì)想到把農(nóng)場(chǎng)設(shè)計(jì)為一個(gè)類(lèi)。

問(wèn)題:

農(nóng)場(chǎng)一頭小母牛,

母牛每年生母牛。

母牛5歲產(chǎn)母牛,

20年后多少牛?

PS:前提:第一頭母牛已經(jīng)>=5歲

思路脈絡(luò):

        面向?qū)ο蠡舅枷?,注意狀態(tài)和行為,抽象出對(duì)應(yīng)的屬性和方法

1、Object Oriented思想

考慮類(lèi):母牛、農(nóng)場(chǎng)

PS:一開(kāi)始可能不會(huì)想到把農(nóng)場(chǎng)設(shè)計(jì)為一個(gè)類(lèi)。但母牛是成長(zhǎng)在農(nóng)場(chǎng)里的,隨著時(shí)間推移,農(nóng)場(chǎng)里的母牛數(shù)量不斷增長(zhǎng)。

考慮屬性:母牛有age、農(nóng)場(chǎng)有oldcows群體(age >= 5) 和 newcows群體(age < 5)。

考慮方法:母??梢陨a(chǎn)小母牛:produceCow() ;農(nóng)場(chǎng)可以得到母??倲?shù) :getNums()

考慮類(lèi)之間的關(guān)系:農(nóng)場(chǎng)的屬性oldcows、newcows是母牛的對(duì)象集合

2、具體實(shí)現(xiàn)

類(lèi)Cow:

public class Cow {
    private int age;  //母牛屬性:年齡
 
    public Cow(int age) {
        super();
        this.age = age;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
    
    public Cow produceCow() {
        if(age >= 5) {
            return new Cow(0);  //若母牛年齡 >= 5歲,則生產(chǎn)小母牛
        }
        return null;
    }
    
}

類(lèi)Farm:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Farm {
    //農(nóng)場(chǎng)的老母牛集合(age>=5)、小母牛集合(age<5)
    private static List oldcows,newcows;  
    
    static {
        oldcows = new ArrayList<>();
        newcows = new ArrayList<>();
        Cow cow=new Cow(5);  //最初的5歲母牛
        oldcows.add(cow);
    }
    
    //獲取第year年的母??倲?shù)
    public static void getNums(int year) {
        for(int i=0;i= 5) {
                    oldcows.add(cow);
                    newcows.remove(cow);
                    break;  //對(duì)java.util.ConcurrentModificationException的處理
                }
            }
            for(Cow cow : oldcows) {
                Cow babycow = cow.produceCow();
                newcows.add(babycow);
            }
            System.out.printf("第%d年農(nóng)場(chǎng)有%d只母牛呢!%n", i+1, oldcows.size() + newcows.size());
        }    
    }
}

主類(lèi):

public class Test {
    public static void main(String[] args) {
        Farm.getNums(20);
    }
 
}

問(wèn)題反思:

1、在方法produceCow()中,如果將生出的小baby設(shè)置為0歲:

return new Cow(0);

2、一開(kāi)始運(yùn)行時(shí)會(huì)報(bào)錯(cuò):java.util.ConcurrentModificationException(并發(fā)修改異常)

原因:在對(duì)newcows進(jìn)行遍歷的時(shí)候,并發(fā)地對(duì)它進(jìn)行了remove操作

解決:在remove操作后立即執(zhí)行break跳出foreach語(yǔ)句。

3、在for(int i=0;i

  一開(kāi)始是將母牛age的++都寫(xiě)到了newcows和oldcows各自的遍歷當(dāng)中去的,但是這樣程序就會(huì)有bug:新的一年變成5歲的母牛被放入oldcows后,age再次被++。所以要進(jìn)行一些修改。

引自:
https://blog.csdn.net/ac2017f...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76102.html

相關(guān)文章

  • 小牛市啟示錄:有價(jià)值何必等風(fēng)來(lái)

    摘要:很多人將這一波的上漲解讀為比特幣小牛市的到來(lái),無(wú)論從技術(shù)層面還是從消息層面來(lái)看,比特幣都有逐步回暖的跡象。到日,關(guān)于英雄鏈網(wǎng)絡(luò)詐騙案被破獲的報(bào)道便鋪天蓋地地傳播開(kāi)來(lái)。 摘要:不在風(fēng)口上,長(zhǎng)了翅膀的項(xiàng)目同樣可以起飛,價(jià)值終究會(huì)超越時(shí)間。 showImg(https://segmentfault.com/img/bVbrS0N?w=4096&h=3575); 自四月初以來(lái),比特幣就開(kāi)啟了起...

    xiaoqibTn 評(píng)論0 收藏0
  • 小牛市啟示錄:有價(jià)值何必等風(fēng)來(lái)

    摘要:很多人將這一波的上漲解讀為比特幣小牛市的到來(lái),無(wú)論從技術(shù)層面還是從消息層面來(lái)看,比特幣都有逐步回暖的跡象。到日,關(guān)于英雄鏈網(wǎng)絡(luò)詐騙案被破獲的報(bào)道便鋪天蓋地地傳播開(kāi)來(lái)。 摘要:不在風(fēng)口上,長(zhǎng)了翅膀的項(xiàng)目同樣可以起飛,價(jià)值終究會(huì)超越時(shí)間。 showImg(https://segmentfault.com/img/bVbrS0N?w=4096&h=3575); 自四月初以來(lái),比特幣就開(kāi)啟了起...

    cartoon 評(píng)論0 收藏0
  • 學(xué)習(xí)Python的建議

    摘要:如果初學(xué)者接觸的第一門(mén)語(yǔ)言是,學(xué)習(xí)曲線(xiàn)則會(huì)平滑得多,掌握一些基本語(yǔ)法和內(nèi)置的數(shù)據(jù)結(jié)構(gòu),已經(jīng)可以上手寫(xiě)一些小工具或者小型應(yīng)用。如果你的學(xué)習(xí)時(shí)間充足,我的建議是一定要學(xué)數(shù)據(jù)結(jié)構(gòu)和算法。 前言 Python是最容易入門(mén)的編程語(yǔ)言,沒(méi)有之一。如果初學(xué)者接觸的第一門(mén)語(yǔ)言是C或者C++,對(duì)他們來(lái)說(shuō)最難的不是語(yǔ)法,而是容易出現(xiàn)內(nèi)存泄漏、指針等問(wèn)題。有時(shí)候排查這些問(wèn)題對(duì)初學(xué)者的打擊很大,尤其是沒(méi)掌握排...

    eechen 評(píng)論0 收藏0
  • 史上最奇葩的5種編程語(yǔ)言,有的甚至模擬奶牛

    摘要:編者按本文作者為,主要介紹世上最怪異最難用的種編程語(yǔ)言。這些語(yǔ)言被稱(chēng)為極品編程語(yǔ)言。創(chuàng)造它們的原因通常是為了測(cè)試編程語(yǔ)言設(shè)計(jì)的臨界,或者只是一個(gè)玩笑。就是母牛的編程語(yǔ)言設(shè)計(jì)時(shí)充分考慮了母牛的想法。 【編者按】本文作者為 Deepak Karanth,主要介紹世上最怪異、最難用的5種編程語(yǔ)言。文章系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn)。 最難學(xué)編程語(yǔ)言有哪些?很多人都用過(guò)Ja...

    LdhAndroid 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<