java - 联赛排程程序,正确插入日期
问题描述
这个程序有一些问题。我是 Java 新手,正在尝试制作一个联赛调度程序。我已经到了用户可以输入所需球队数量、预期联赛开始日期和结束日期的地步。一旦用户选择了结束日期,就会向用户建议多轮比赛,因为这将是联赛需要持续的周数。虽然目前,当联盟生成时,日期完全打印,我的问题是我怎样才能打印日期 - “第 1 轮 05/06/2018”。另外,如何更改我的程序以便可以接受奇数,类似于“再见”?我为我对该主题的不了解表示歉意,我已经包含了我的代码片段和我的 GUI 的图片,因此它提供了更多的上下文。
void cyclicRoll(int cycle[], int teams) {
int tmp = cycle[1];
for(int i=1;i<teams-1;i++) {
int pr = cycle[i+1];
cycle[i+1] = tmp;
tmp = pr;
}
cycle[1] = tmp;
}
void scheduleTournament(int teams, int round) {
if (((teams%2 != 0) && (round != teams - 1))||(teams <= 0))
throw new IllegalArgumentException();
int[] cycle = new int[teams];
int n = teams /2;
for (int i = 0; i < n; i++) {
cycle[i] = i + 1;
cycle[teams - i - 1] = cycle[i] + n;
}
Date startDate = (jXDatePicker1.getDate());
Date endDate = (jXDatePicker2.getDate());
LocalDate dates = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate firstdate = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
DayOfWeek dayOfWeeek = dates.getDayOfWeek();
LocalDate datee = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
String listrep ="";
String firstDateToPrint = firstdate.toString();
while (!dates.equals(datee)) {
jTextArea1.removeAll();
if(dayOfWeeek == dayOfWeeek) {
dates = dates.plusDays(7);
}
String[] Itdates = {dates.toString()
};
for(String replacement : Itdates) {
if ("".equals(listrep)) {
listrep += replacement;
} else {
listrep += ", \n" + replacement ;
}
}
}
jTextArea1.append(firstDateToPrint + "\n");
jTextArea1.append(listrep);
for(int d = 1; d <= round; d++)
{
jTextArea1.append(String.format("Round %d\n", d ));
for (int i = 0; i < n; i++)
{
jTextArea1.append(String.format("team %d - team %d\n",cycle[i],cycle[teams - i - 1]));
}
//Roll the cycle keeping the first constant
cyclicRoll(cycle,teams);
}
}
String ref;
String teams;
String rounds;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
jTextArea1.selectAll();
jTextArea1.replaceSelection("");
teams = jTextField1.getText();
int teamsToEnter = Integer.parseInt(teams);
rounds = jTextField2.getText();
int roundsToEnter = Integer.parseInt(rounds);
ref = jTextField3.getText();
jTextArea1.append("Ref "+ref + "\n");
scheduleTournament(jTextField2,roundsToEnter);
}
解决方案
推荐阅读
- angular - ng-cli 6 和字体真棒图标不起作用
- visual-studio - Cshtml文件被冻结
- swift - NSPredicate 用于过滤数组
- python - 在 Python 中发送自定义帧/数据包
- azure - VSTS 构建期间的 Azure 函数转换
- javascript - 如何使用引导程序 3 使布局响应
- ios - 从 SCNNode 中的特定关键帧播放动画
- php - 如何使用 php/mySQL 查询 3 个表,将所有类别保留在正确的表中?
- javascript - 使用背景附件时图像在 chrome 中移动:已修复
- ios - 在 MKMapView 中的注释周围画一个圆圈