Código fuente del sitio web del concurso
= = = = código = = = =
Paquete com
Importar Java.awt.borderlayout;
Importar Java.awt .diseño de flujo;
Importar evento de acción Java .
Importar evento de Java . list;
Importar javax.swing.jbutton;
Importar javax.swing.jframe;
Importar javax.swing.jlabel;
Importar javax.swing.jlist;
Importar javax.swing.jpanel;
Importar javax.swing.jtextfield;
/**
*Partido de tenis
* @Author Chris
* @ClassName: Partido
* @Version
* @Modify
* @ Copyright @ 2010H&l Technology Company.
* @ fecha 2011-5-24AM 11:29:39
* @Descripción
*/
Implementación de coincidencia de clase pública ActionListener{
JFrame privado f;
JTextField privado tf
Contenedor JPanel privado;
JList privado myList
Mensaje privado de JLabel;
JButton privado b;
/**
* @authorChris
* @title: main p>
* @fecha 2011-5-23 11:07:27 AM
* @param parámetro void
*/
Vacío estático público main(String[] args) {
Partido t = nuevo Partido();
t go();
}
F = new JFrame("Competición");
f.setLocation(100, 200);
f .setSize (600, 500);
Contenedor = nuevo JPanel(nuevo BorderLayout());
f.setContentPane(contenedor);
Título de JPanel = nuevo JPanel (nuevo FlowLayout());
TF = nuevo JTextField(10);
título agregar(TF);
b = nuevo JButton( " OK. ");
b . addactionlistener(this);
title . add(b);
mensaje = new JLabel();
title.add(mensaje);
container.add(title, BorderLayout.
Norte);
mi lista = new JList();
container.add(myList, BorderLayout. Center);
f. ;
}
/**
*Muestra los resultados de la competencia.
* @authorChris
* @title:show
* @date 2011-5-24 11:31:05 am
* @param n void
*/
Visualización de vacío privado (entero){
c = nueva crisis(n);
Lista<List<string[]>>result = c.get result();
String[]str = new String[result.size()];
for(int I = 0; i<result . size();i++) {
StringBuilder sb = new StringBuilder();
Alguien agrega ("ésimo"). Agregar (i+1). append("Día:");
Lista & ltstring[]& gt; matchList = resultado .
for(String[] match : matchList){<. /p>
Alguien agrega ("["). agregar(coincidencia[0]). añadir("-"). añadir(coincidencia[1]). append("]");
}
str[I]= sb .
}
mi lista. . setlistdata(str);
mensaje . settext(" "
f . >/**
*Borrar datos
* @authorChris
* @title:Clear
* @ fecha 2011- 5- 24 a.m. 11:30:36 void
*/
Vacío privado clear(){
string[]str = { " " };
p>mi lista . setlistdata(str);
mensaje . settext(" ");
}
acción de anulación pública realizada (evento de acción). e){
clear();
cadena s = TF . gettext();
if (s == nulo || " ".
igual(s = s . trim()){
Message.setText("Ingrese un número par");
}
Pruebe { p >
int n = entero . analizar int(s);
If (n & lt= 0 || n % 2!= 0) {
Message.setText ( "Ingrese un número par");
} De lo contrario {
Mostrar (n); Excepción ex ) {
Message.setText("Ingrese un número par");
}
f . >
}
}
Segunda lección:
Paquete com
Importar Java util .
Importar Java.util.hashmap;
Importar Java.util.lista enlazada;
Importar Java.util.list;
Importar Java.util . map;
Importar Java . util . aleatorio;
Crisis de clase pública {
/* *Número de jugadores*/
Private int n
/* *Juegos que cada atleta nunca ha jugado clave: nombre del jugador, valor: conjunto de juegos a jugar*/
Mapa privado< string, list & ltstring []& gt;& gtplayerMacth
/* *Nombre del jugador*/
Cadena privada[] jugador;
/* *Colección de distribución diaria final del juego * /
Lista de distribución individual<List<string[]>>Result;
/* *Todos los concursos opcionales*/
Lista de distribución personal<List<string[]>>allMatchData[];
/* *Juegos diarios*/
Lista<string[]>dayMatch
/* *Objeto aleatorio*/
Privado aleatorio r;
/* *Número de días calculado actualmente*/
privado int nowDay
Crisis pública (internacional)
this. n = n
playerMacth = new HashMap<String,List<string[]>> ();;
resultado = new ArrayList & ltlist& ltstring[]& gt();
allMatchData = nueva lista enlazada[n-1];
p>r = new Random()
init(); >go();
}
/ **
*Inicializar reproductor
* @authorChris
* @title: init
* @date 2011-5 -23pm 04:22:32 void
*/
Init privado void(){ p>
//Define el nombre del jugador, representado por números, a partir de 1 inicio.
jugadores = new string [n];
for(int I = 0; i< jugadores.length; i++) {
//Definición Nombre del jugador.
players[I]= string . value of(I+1);
//Almacena el conjunto de juegos que cada jugador quiere jugar.
List<string[]>matchList = new LinkedList <string[]>();
//Colección de juegos del jugador
playerMacth put(players[i. ], matchList);
//Componente del reproductor, sin cambios
//playerlistconst add(players[I]);
}
<. p>//Definir el juego de todosfor(int I = 0; i& ltplayers . length-1; i++) {
for( int j = I+1; j & lt player.length; j++) {
string[]match = {player[i], player[j]} //Definir una competencia
//Agregar este evento al colección de partidos del jugador correspondiente.
jugadorMacth.get(jugadores[i]). agregar(partido);
jugadorMacth.get(jugadores[j]). Agregar (coincidir);
}
}
}
/**
* Obtener aleatoriamente el número actual de días que se puede jugar la combinación de partidos, y la combinación de partidos se elimina del conjunto total.
*Si no hay juegos en los días actuales, obtén los juegos primero y luego al azar.
* @authorChris
* @title: getNowDayMatch
* @date 2011-5-24 09:48:23 a.m.
* @return list<string[]>
*/
Lista de distribución personal<string[]>getNowDayMatch(){
if(allMatchData[nowDay]= = null){
setAllMatchNowDay();
}
if (!allMatchData[nowDay].isEmpty()) {
int index = r . nextint(allMatchData[ahora día].size());
List<string[]>list = allMatchData[ahoraDía]. get(index);
allMatchData[nowDay]. Eliminar(index);
Devolver pedido;
} De lo contrario {
Devolver nulo
}
}
/**
*Cancelar el juego del día anterior.
* @authorChris
* @title:Cancelar ayer
* @ fecha 2065 438+01-5-24 09:56:12 no válido.
*/
Private voidCancelYesterday(){
//Borrar las combinaciones coincidentes opcionales para la fecha actual.
allMatchData[nowDay]= null;
//Revertir la hora al día anterior.
hoy día-;
//Gana el juego del día anterior
List<string[]>matchList = result.get(hoy día
//Cancelar el juego del día anterior.
resultado . remove(nowDay);
//Restaura los juegos en los que no ha participado cada deportista.
for(String[] coincidencia: matchList){
playerMacth.get(partida[0]). agregar(coincidencia);
playerMacth.get(coincidencia[1]). Add(match);
}
}
Public void go(){
//Número de días de bucle
for(now day = 0;now<n-1;) {
//1. Jugar juegos aleatoriamente
List<string[]>matchList = getNowDayMatch( );
//No existe ninguna combinación competitiva. Vuelve al día anterior y cancela el juego del día anterior. Vuelva al día anterior y omita este bucle.
if (matchList == null) {
cancelar ayer();
Continuar
}
//3 Recorre la competencia para eliminar jugadores y elimina a los jugadores que no están compitiendo.
for(String[] coincidencia: matchList){
playerMacth.get(partida[0]). eliminar(coincidencia);
playerMacth.get(coincidencia[1]). eliminar(match);
}
resultado add(matchList);
hoy día++;
}
}
/**
* A partir del jugador 1, obtén todos los eventos combinables del día.
* @authorChris
* @title: setAllMatchNowDay
* @date 2011-5-24 09:42:51 No válido por la mañana.
*/
Nulo privado setAllMatchNowDay(){
allMatchData[nowDay] = nueva lista vinculada<list<string[]>>( );
int n = 1; //Atleta No. 1
//Este atleta no ha participado en competiciones.
Lista & ltstring[]& gt; matchList = player macth . get(string . value of(n)); p>
Lista<string[]>selectedList = new ArrayList <string[]>();
lista seleccionada add(match);
doDetAllMatchNowDay (n+1, lista seleccionada);
}
}
/**
*Todas las combinaciones del juego de hoy
/** p>
* @authorChris
* @title: doDetAllMatchNowDay
* @ fecha 2011-5-24 09:46:05AM
* @param playerNum
* @param selectedList void
*/
private void doDetAllMatchNowDay(int player num, List & ltstring[]& gt; selectedList) {
//Nombre del atleta
cadena jugador = cadena valor de(núm jugador);
Bandera booleana = verdadero;
. //Determinar si este atleta es seleccionado.
for(String[]match:lista seleccionada){
if(match[0].equals(player) || match[1].equals(player)){
flag = false
Break;
}
}
//ha sido seleccionado.
if (flag == false) {
//Última persona
if (playerNum == n) {
allMatchData [ ahoraDía]. add(lista seleccionada);
}De lo contrario {
doDetAllMatchNowDay(núm de jugador+1, lista seleccionada);
}
Regresar ;
}
//Este deportista no ha participado en competiciones.
List<string[]>matchList = player macth.get(player);
//Las coincidencias que este jugador puede elegir.
Lista<string[]>canDoList = nueva ArrayList <string[]>();
for(String[] coincidencia: matchList){
flag = true
for(String[]selected:lista seleccionada){
if(match[0].Equals(player)){
if(match[ 1].equal to(selected[0])){
flag = false
}else if(match[1].equal to(selected[1 ]){ p>
bandera = false
}
}else{
if(coincidencia[0].
es igual(seleccionado[0])){
bandera = false
}else if(match[0]. es igual(seleccionado[1]){
bandera = false
}
}
}
si (bandera){
puede agregar lista. (match);
}
}
//Recorre los juegos que este atleta puede elegir
for(String[. ] coincidencia: canDoList){
List& ltstring[]& gt; new list = copyArrayList(lista seleccionada);
//Grabar el juego actual
new list . add(match);
//Última persona
if (playerNum == n) {
allMatchData[nowDay]. >
} En caso contrario {
doDetAllMatchNowDay(número de jugador+1, nueva lista
}
}
}<); /p>
/**
*Copiar colección
* @authorChris
* @title: copyArrayList p>
* @ fecha 2011-5-24 09:24:44 am
* @param list
* @return list<string[]>
*/
Lista de distribución personal<string[]>copiar ArrayList(List<string[]>List){
List<string[ ]& gt;newList = new ArrayList & ltstring[]& gt;();
for(String[] s : lista){
nuevaLista.add
}
Devolver nuevaLista
}
Lista pública<list<string[]>>getResult() {
Devolver resultados;
}
}