JAVA implementa programación orientada a objetos, ¿cómo solucionar este problema?
Index.javaimport?java.io.BufferedWriter;
importar?java.io.FileWriter;
importar?java.io.IOException;
importar?java.util.HashMap;
importar?java.util.Iterator;
importar?java.util.Map;
importar ?java.util.Scanner;
import?java.util.Set;
public?class?Index?{
//Crear entrada de teclado global Objeto.
static?Scanner?sc;
public?static?void?main(String[]?args)?throws?IOException?{
sc ?=?new?Scanner(System.in);
//Crea un mapeo de mapa, la clave es el número del equipo y el valor es la clase del equipo.
HashMaplt; String,? Teamgt;?teams?=?new?HashMaplt;String,?Teamgt;();
//Nombre del bucle, utilizado para especificar la salida y continuar.
Bucle :? while ?(true)?{
//Opciones de impresión
System.out.println("1. ¿Agregar un equipo? 2. ¿Ver el equipo? 3. Eliminar ¿Información del jugador? 4. ¿Exportar información del equipo? 5. Salir");
String?option?=?sc.nextLine();
¿cambiar?(opción)?{ p>
caso?"1":? //1.Agregar equipo
addTeam(teams);
descanso;
caso?" 2 ":? ///?2. Ver equipos
viewTeam(teams);
break;
case?"3": ///?3. Eliminar jugadores
eliminarPlayer(teams);
break;
case?"4": //Exportar información
> exportInfo(teams);
break;
case?"5": ///?5. p >
sc.close();?/?//?Cierra el flujo de entrada antes de salir de este sistema.
break?Loop;
default:?
p>System.out.println("Entrada incorrecta, vuelva a ingresar: "
continuar? Loop;
}
}
//Agregue un equipo de acuerdo con el número del equipo y agregue objetos de jugador al equipo al agregar el equipo.
público?estático?vacío?addT
eam(Maplt; String, ?Teamgt; ?teams)?{
System.out.println("Ingrese el número del equipo: ");
String?teamID?=? sc.nextLine();
//Crear un nuevo objeto de equipo.
Team?team?=?new?Team();
equipo. setTeamID(teamID);
///? Agrega el objeto de equipo creado al mapa.
teams.put(teamID,?team);
System. out.println("Ingrese el nombre del equipo: ");
String?teamName?=?sc.nextLine();
team.setTeamName(teamName);
System.out.println("Ingrese la ciudad donde se encuentra el equipo:");
String?teamCity?=?sc.nextLine();
team .setTeamCity(teamCity);
// Crea una nueva variable booleana para determinar si se continúa agregando.
boolean?flag?=?true;
while ?(bandera)?{
System.out.println("Ingrese el nombre del jugador: ");
String?playerName?=?sc.nextLine();
System.out.println("Ingrese los puntos promedio del jugador por juego:");
double?pointsPerGame?=?sc.nextDouble();
sc.nextLine ();
System.out.println("Seleccione el tipo de jugador:? 1. ¿Delantero? 2. ¿Centro? 3. Defensor"); //Crea una nueva variable de posición para determinar el tipo de jugador agregado.
int?position?=?sc.nextInt();
sc.nextLine(); p>
si?(posición?==?1)?{
¿Adelante?jugador?=?nuevo?Adelante();
team.setPlayers(jugador);
player .setPlayerPosition("Forward");
System.out.println("Ingrese el promedio de rebotes por juego:");
double?reboundsPerGame ?=?sc.nextDouble();
sc.nextLine();
player.setPlayerName(playerName);
player.setPointsPerGame(puntosPorJuego);
jugador. setReboundsPerGame(reboundsPerGame);
}?else?if?(position?==?2)?{
C
enter?player?=?new?Center();
team.setPlayers(jugador);
player.setPlayerPosition("Centro");
Sistema .out.println("Ingrese el promedio de bloqueos por juego:");
double?blocksPerGame?=?sc.nextDouble();
sc.nextLine();
player.setPlayerName(playerName);
player.setPointsPerGame(pointsPerGame);
player.setBlocksPerGame(blocksPerGame);
}? else? {
Guardia?jugador?=?new?Guardia();
team.setPlayers(jugador);
player.setPlayerPosition("Guardia"
System.out.println("Ingrese el promedio de asistencias por juego: "
double?assistsPerGame?=?sc.nextDouble(); p> sc .nextLine();
player.setPlayerName(playerName);
player.setPointsPerGame(pointsPerGame);
player.setAssistsPerGame(asistenciasPerGame);
}
System.out.println("Si se continúa agregando: (S/N)");
String?isAdd?=?sc. nextLine();
if?(isAdd.equalsIgnoreCase("y"))
bandera?=?true
else
flag?= ?false;
}
System.out.println("Número de equipo\tNombre del equipo\tCiudad del equipo");
Sistema .out .println(team.getTeamID()? ?"\t\t"? ?team.getTeamName()? ?"\t\t"? ?team.getTeamCity());
} p>
///? Muestra información del jugador según el equipo.
public?static?void?viewTeam(Maplt; String,?Teamgt;?teams)?{
//Utilice el método keySet para recuperar las claves en el mapa. Se utiliza para iterar sobre el objeto Equipo.
Setlt;?keyset?=?teams.keySet();
para?(Iteratorlt;Stringgt;?itt?=?keyset.iterator();?itt.hasNext();)?{
<p> String?tmp?=?itt.next();
Equipo?team?=?teams.get(tmp);
System.out.println("Número de equipo \tNombre del equipo\tCiudad del equipo");
System.out.println(team.getTeamID()? ?"\t\t"? ?team.getTeamName()? ? "\t\t" ?team.getTeamCity());
//Después de obtener el objeto Team, itere sobre ArrayList, que almacena los objetos del reproductor.
System. Nombre del jugador\tPromedio de puntos por juego\tTipo de jugador");
for?(Iteratorlt;Playergt;?itp?=?team.getPlayers().iterator();?itp .hasNext();) ?{
Jugador?jugador?=?itp.next();
if?(player.getPlayerPosition().equals("Adelante"))
jugador?=?(Adelante)?jugador;
else?if?(player.getPlayerPosition().equals("centro"))
jugador ?=?(Centro) ?jugador;
else
jugador?=?(Guardia)?jugador;
System.out.println(jugador
}
}
}
///? Primero elimine el jugador según el número del equipo. Si no hay ningún equipo/jugador, aparecerá el mensaje.
public?static?void?deletePlayer(Maplt; String,?Teamgt;?teams)?{
System.out.println("Ingrese el contenido que desea eliminar Número de equipo" );
String?teamID?=?sc.nextLine();
// Determine si el número de equipo ingresado existe en el mapeo del mapa; si no, salte Regrese al interfaz de selección.
if?(teams.containsKey(teamID))?{
Team?team?=?teams.get(teamID);
Sistema .out.println("Ingrese el nombre del jugador: ");
String?playerName?=?sc.nextLine();
boolean?flag?=?false;
for?(Iteratorlt;Playergt;?it?=?team.getPlayers().iterator();?it.hasNext();)?{
Player?tmp?= ?it.next();
si?(playerName.equals(tmp.getPlayerName()))?{
bandera?=?true;
él
.remove();
System.out.println("Eliminación exitosa"
pausa
}
}
if?(!flag)
System.out.println("Error al eliminar, no existe tal reproductor"); p> System.out.println("No existe tal equipo, seleccione la función nuevamente.");
}
// Exportar información del equipo al directorio actual.
p>public?static?void?exportInfo(Maplt;String,?Teamgt;?teams)?throws?IOException?{
Setlt;Stringgt;?keyset?=?teams .keySet() ;
/// Determine si la información del equipo se ha ingresado juzgando la longitud del keySet.
if?(keyset.size()?!=? 0)?{
BufferedWriter?bfw?=?new?BufferedWriter(new?FileWriter("Teams.txt"));
para?(Iteratorlt;Stringgt;?it? =?keyset.iterator() ;?it.hasNext();)?{
String?tmp?=?it.next();
¿Equipo?team?=? equipos.get(tmp);
bfw.write("Número de equipo\tNombre del equipo\tCiudad del equipo");
bfw.newLine();
bfw .write(team.getTeamID()? ?"\t\t"? ?team.getTeamName()? ?"\t\t"? ?team.getTeamCity());
bfw. nuevaLínea ();
}
bfw.close();
}?else?{
System.out.println( " Primero ingrese la información del equipo y luego exporte.");
}
}
// Salga del sistema.
public ?static?void?exit()?{
System.out.println("Bienvenido la próxima vez.");
}
}
p>Team.javaimport?java.util.ArrayList;
¿clase pública?¿Equipo?{
privado?String?teamID //Número de equipo; p>
private?String?teamName; //Nombre del equipo
private?String?teamCity //La ciudad donde se encuentra el equipo
privado? ArrayListlt;Playergt; ?players; //Player collection
public?Team()?{?//?Al crear una instancia de Team, cree una instancia de la colección ArrayList.
> player?=?new?ArrayListlt;gt;();
}
//Obtener y establecer métodos para cada atributo
public?String? getTeamID ()?{
return?teamID;
}
public?void?setTeamID(String?teamID)?{
este .teamID?=?teamID;
}
public?String?getTeamName()?{
return?teamName;
}
public?void?setTeamName(String?teamName)?{
this.teamName?=?teamName;
}
public ?String?getTeamCity()?{
return?teamCity;
}
public?void?setTeamCity(String?teamCity)?{
this.teamCity?=?teamCity;
}
public?ArrayListlt;Playergt;?getPlayers()?{
return?players;
}
//El método set de jugadores agrega directamente jugadores a ArrayList.
public?void?setPlayers(Player?player)?{< / p>
jugadores.add(jugador);
}
}
Player.javapublic?class?Player?{
protected?String?playerName; //?Nombre del jugador
protected?double?pointsPerGame; //?Puntos promedio por juego
protected?String?playerPosition //?Tipo de jugador;
///?Obtener y configurar métodos de cada atributo
public?String?getPlayerName()?{
return?playerName;
}
public?void?setPlayerName(String?playerName)?{
this.playerName?=?playerName;
}
público?doble?getPointsPerGame()?{
return?pointsPerGame;
}
público?void?setPointsPerGame(doble?pointsPerGame)?{ p>
this.pointsPerGame?=?pointsPerGame;
}
public?String?getPlayerPosition()?{
return
?playerPosition;
}
public?void?setPlayerPosition(String?playerPosition)?{
this.playerPosition?=?playerPosition;
}
/// Reescribe el método toString para facilitar la salida
public?String?toString()?{
return?playerName? t\t"? ?pointsPerGame? ?"\t\t"? ?playerPosition;
}
}
Adelante.javapublic?clase?Adelante? extends?Player?{
privado?double?reboundsPerGame;?//?Rebotes por juego
//get, set métodos
public?double? getReboundsPerGame()?{
return?reboundsPerGame;
}
public?void?setReboundsPerGame(double?reboundsPerGame)?{
this.reboundsPerGame?=?reboundsPerGame;
}
/// Anula el método toString para facilitar la salida
public?String?toString()?{
return?playerName? ?"\t\t"? ?pointsPerGame? ?"\t\t"?playerPosition ?"\t\t"? ?reboundsPerGame;
}
}
Center.javapublic?class?Center?extends?Player?{
privado?doble ?blocksPerGame;?//?Bloques promedio por juego
//get, set métodos
public?double?getBlocksPerGame()?{
return? blocksPerGame ;
}
public?void?setBlocksPerGame(double?blocksPerGame)?{
this.blocksPerGame?=?blocksPerGame;
}
///? Reescribe el método toString para facilitar la salida
public?String?toString()?{
return?playerName ?"\t \ t"? ?pointsPerGame? ?"\t\t"? ?playerPosition? ?"\t\t"? ?"Promedio de bloqueos por juego\t\t"? ?blocksPerGame;
}
}
Guard.javapublic?class?Guard?extends?Player?{
privado
?double?assistsPerGame;?//?Asistencias por juego
//?get, set métodos
public?double?getAssistsPerGame()?{
return ?assistsPerGame;
}
public?void?setAssistsPerGame(double?assistsPerGame)?{
this.assistsPerGame?=?assistsPerGame;
}
/// Reescribe el método toString para facilitar la salida
public?String?toString()?{
return?playerName? t\t"? ?puntosPorJuego? ?"\t\t"? ?posiciónjugador? ?"\t\t"? ?"Asistencias por juego\t\t"? ?asistenciasPorJuego;
}
}
A excepción de los comentarios, si tiene alguna pregunta que no comprende, las funciones han sido probadas y pueden utilizarse.