ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:17.73KB ,
资源ID:12093414      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12093414.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(循环网球赛源码原创.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

循环网球赛源码原创.docx

1、循环网球赛源码原创需求 : 假设有n=2k 个运动员要进行网球循环赛。设计一个满足一下要求的比赛日程表:(1). 每个选手必须与其他n-1个选手各赛一次(2). 每个选手一天只能赛一次(3). 循环赛一共进行n-1天利用Java语言开发一个界面,输入运动员的个数,输出比赛日程表。对于输入运动员数目不满足n=2k时,弹出信息提示用户。共两个类,需放到com包下。运行 Match类。第一个类:package com;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;im

2、port java.awt.event.ActionListener;import java.util.List;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JTextField;/* * 网球赛 * author Cris * ClassName: Match * Version * ModifiedBy * Copyright 2010 H

3、&L Technology Inc. * date 2011-5-24 上午11:29:39 * description */public class Match implements ActionListener private JFrame f; private JTextField tf; private JPanel container; private JList myList ; private JLabel message; private JButton b; /* * author Cris * title: main * date 2011-5-23 上午11:07:27

4、* param args void */ public static void main(String args) Match t = new Match(); t.go(); public void go() f = new JFrame(比赛); f.setLocation(100, 200); f.setSize(600,500); container = new JPanel(new BorderLayout(); f.setContentPane(container); JPanel title = new JPanel(new FlowLayout(); tf = new JTex

5、tField(10); title.add(tf); b = new JButton(确定); b.addActionListener(this); title.add(b); message = new JLabel(); title.add(message); container.add(title,BorderLayout.NORTH); myList = new JList(); container.add(myList,BorderLayout.CENTER); f.setVisible(true); /* * 显示比赛结果 * author Cris * title: show *

6、 date 2011-5-24 上午11:31:05 * param n void */ private void show(int n) Cris c = new Cris(n); ListList result = c.getResult(); String str = new Stringresult.size(); for (int i = 0; i result.size(); i+) StringBuilder sb = new StringBuilder(); sb.append(第).append(i+1).append(天: ); List matchList = resul

7、t.get(i); for(String match : matchList) sb.append().append(match0).append(-).append(match1).append( ); stri = sb.toString(); myList.setListData(str); message.setText(); f.setVisible(true); /* * 清空数据 * author Cris * title: clear * date 2011-5-24 上午11:30:36 void */ private void clear() String str = ;

8、myList.setListData(str); message.setText(); public void actionPerformed(ActionEvent e) clear(); String s = tf.getText(); if (s = null | .equals(s = s.trim() ) message.setText(请输入一个偶数); try int n = Integer.parseInt(s); if (n = 0 | n % 2 != 0) message.setText(请输入一个偶数); else show(n); catch (Exception e

9、x) message.setText(请输入一个偶数); f.setVisible(true); 第二个类:package com;import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Random;public class Cris /*选手数量*/ private int n ; /*各个运动员还没进行的比赛 key:球员名称,value:需进行的比赛集合*/ pri

10、vate MapString, List playerMacth ; /*球员人名*/ private String players ; /*最终每天的比赛分布集合*/ private ListList result; /*所有可选的比赛*/ private ListList allMatchData; /*每天的比赛*/ List dayMatch ; /*一个随机对象*/ private Random r; /*当前运算到的天数*/ private int nowDay; public Cris(int n) this.n = n; playerMacth = new HashMapStr

11、ing, List(); result = new ArrayListList(); allMatchData = new LinkedListn-1; r = new Random(); init(); go(); /* * 初始化球员 * author Cris * title: init * date 2011-5-23 下午04:22:32 void */ private void init() /定义球员人名,以数字代表,从1开始 players = new Stringn; for (int i = 0; i players.length; i+) /定义球员的名字 players

12、i = String.valueOf(i+1); /存放每个球员要进行的比赛的集合 List matchList = new LinkedList(); /球员赛事集合 playerMacth.put(playersi, matchList); /球员集合,不变/ playerListConst.add(playersi); /定义每个人的比赛 for (int i = 0; i players.length -1; i+) for (int j = i+1; j players.length ; j+) String match = playersi,playersj;/定义一个比赛 /把此

13、赛事添加到相应球员需比赛集合中 playerMacth.get(playersi).add(match); playerMacth.get(playersj).add(match); /* * 随机获得一个当前天数可进行的比赛组合,并把此比赛组合从总集合中移除 * 如果当前天数无比赛,则先获得比赛,再随机 * author Cris * title: getNowDayMatch * date 2011-5-24 上午09:48:23 * return List */ private List getNowDayMatch() if (allMatchDatanowDay = null) se

14、tAllMatchNowDay(); if (! allMatchDatanowDay.isEmpty() int index = r.nextInt(allMatchDatanowDay.size(); List list = allMatchDatanowDay.get(index); allMatchDatanowDay.remove(index); return list; else return null; /* * 取消前一天的比赛 * author Cris * title: cancelYesterday * date 2011-5-24 上午09:56:12 void */

15、private void cancelYesterday() /清空当前天数的可选比赛组合 allMatchDatanowDay = null ; /时间恢复到前一天 nowDay-; /获得前一天的比赛 List matchList = result.get(nowDay); /取消前一天的比赛 result.remove(nowDay); /恢复每个运动员未进行的比赛 for(String match : matchList) playerMacth.get(match0).add(match); playerMacth.get(match1).add(match); public voi

16、d go() /循环比赛天数 for ( nowDay = 0; nowDay n -1; ) /1.随机一个比赛 List matchList = getNowDayMatch(); /无比赛组合 ,返回上一天 取消上一天的比赛,时间回退到前一天,跳过此次循环 if (matchList = null) cancelYesterday(); continue; /3遍历比赛 去除运动员 去除运动员的未进行比赛 for(String match : matchList) playerMacth.get(match0).remove(match); playerMacth.get(match1)

17、.remove(match); result.add(matchList); nowDay+; /* * 从1号队员开始,获得当前天数所有可组合的赛事 * author Cris * title: setAllMatchNowDay * date 2011-5-24 上午09:42:51 void */ private void setAllMatchNowDay() allMatchDatanowDay = new LinkedListList(); int n = 1;/1号运动员 /此运动员未进行的比赛 List matchList = playerMacth.get(String.va

18、lueOf(n); for(String match : matchList) List selectedList = new ArrayList(); selectedList.add(match); doDetAllMatchNowDay(n+1, selectedList); /* * 今天比赛的所有组合 * author Cris * title: doDetAllMatchNowDay * date 2011-5-24 上午09:46:05 * param playerNum * param selectedList void */ private void doDetAllMatc

19、hNowDay(int playerNum,List selectedList) /运动员名称 String player = String.valueOf(playerNum); boolean flag = true; /判断此运动员是不是已被选过 for(String match : selectedList) if (match0.equals(player) | match1.equals(player) flag = false; break; /已被选过 if ( flag = false) /最后一个人员 if (playerNum = n) allMatchDatanowDa

20、y.add(selectedList); else doDetAllMatchNowDay(playerNum+1, selectedList); return; /此运动员未进行的比赛 List matchList = playerMacth.get(player); /此运动员可选择的比赛 List canDoList = new ArrayList(); for(String match : matchList) flag = true; for(String selected : selectedList) if(match0.equals(player) if(match1.equa

21、ls(selected0) flag = false; else if(match1.equals(selected1) flag = false; else if(match0.equals(selected0) flag = false; else if(match0.equals(selected1) flag = false; if (flag) canDoList.add(match); /遍历此运动员可选择的比赛 for(String match : canDoList) List newList = copyArrayList(selectedList); /记录当前比赛 new

22、List.add(match); /最后一个人员 if (playerNum = n) allMatchDatanowDay.add(newList); else doDetAllMatchNowDay(playerNum+1, newList); /* * 复制集合 * author Cris * title: copyArrayList * date 2011-5-24 上午09:24:44 * param list * return List */ private List copyArrayList(List list) List newList = new ArrayList(); for(String s : list) newList.add(s); return newList; public ListList getResult() return result;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1