簡體   English   中英

如何用Java編寫團隊調度程序

[英]how to write a team scheduling program in Java

我希望有人給我一些如何用Java編寫該程序的想法。 不希望人們為我編寫代碼 ,但指導我如何開始以及應使用什么方法/設計來完成此程序。 我是Java的新手,這對我來說是一種編程實踐。

我對該程序的想法是一個簡單的團隊計划程序,該程序允許用戶進入眾多團隊並為每個團隊生成時間表。 在時間表中,每個團隊只會對戰一次。

例如4隊

團隊1與團隊2
團隊3與團隊4
------------------------
團隊1與團隊3
戰隊2 vs戰隊4
------------------------
團隊1與團隊4
團隊2與團隊3

我的問題是我應該使用數組存儲所有團隊嗎? 我應該如何生成時間表(使用Random類)? 我如何確保每個團隊只會對戰一次 ,而不是多次?

非常感謝。

1)實施細節:請稍等。 您不知道如何使用邏輯解決方案。

2)每個團隊在比賽中必須與其他團隊進行比賽的事實是確定性的。 完全由您決定的是您在一段時間內分發游戲的方式。 例如,給定團隊每天連續多少場比賽? 給定一組規則,自然地,您可以選擇一個給定插槽n個選擇的隨機選擇(或者您可以選擇..中的第一項。[請參見答案#1])。

3)如果您不熟悉此材料,請閱讀排列和組合

您應該有一個Team對象,其中包含有關團隊的數據。 每個團隊一個團隊對象。 擁有一個Match對象,您可以在其中傳遞兩個Team對象,使它們可以互相對抗,這也可能很有用。 您可以在Team和Match對象之外編寫方法,以自動生成在比賽中競爭的球隊。

我將使用Team對象的ArrayList,然后如果要進行隨機匹配,只需生成兩個隨機數,它們將作為ArrayList中的索引。 您可以使用Math.random()或Random類,沒關系。 這兩個數字不應該相同,否則一支球隊會自己比賽,這是沒有意義的。 您應該能夠由此在代碼中算出算法。

希望這可以幫助。

以下是一些基本思路:

當然,您需要一個Team對象。 並且您需要一個Schedule對象。 然后,我將從“設計模式”書中推薦幾個實現選擇。 一種是使用Builder模式。 您將擁有一個ScheduleMaker,然后您將擁有不同的混凝土建造者。 例如,在《足球》中,有關於時間表的規則:每支球隊將與該部門的每個同伴進行2場比賽。 通常,使用不同的混凝土建造者來提供不同的物理差異。 例如,在Go4書中,該示例是MazeBuilder的示例,其中簡單和復雜的實現包含不同數量的門,廳等。在您的情況下,您可能希望以不同的面向規則的方式制定時間表。 對於我給出的示例,您可以將一個名為“ setupDivisionalGames”的方法推入該接口,然后可以用不在該部門內的隨機選擇的競爭對手填充其余的時間表。 (構建器通常是buildA,buildB ... getProduct()。)

如果這聽起來像是另一種模式,那么一個更簡單的實現就是只具有一個戰略模式來挑選對手。 如果您沒有上述規則,那么簡單的隨機策略將是一個不錯的默認實現,並且如果您想獲得更多幻想,則可以對新的實現進行單元測試,而無需更改其他代碼並獲得新的時間表。

最后,考慮采用基於分數的方法的可能性。 這就是NFL的運作方式。 如果您是底特律雄獅隊,那么與本賽季的包裝工隊相比,您的日程安排會更加混亂。 無論是Builder還是Strategy,都可以讓您輕松地完成類似任務:團隊的相對得分必須接近所有對手的平均得分,諸如此類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM