當前位置:編程學習大全網 - 編程語言 - JAVA實現面對對象編程,這道題怎麽做?

JAVA實現面對對象編程,這道題怎麽做?

Index.java

import?java.io.BufferedWriter;

import?java.io.FileWriter;

import?java.io.IOException;

import?java.util.HashMap;

import?java.util.Iterator;

import?java.util.Map;

import?java.util.Scanner;

import?java.util.Set;

public?class?Index?{

//?創建全局鍵盤輸入對象.

static?Scanner?sc;

public?static?void?main(String[]?args)?throws?IOException?{

sc?=?new?Scanner(System.in);

//?創建Map映射,鍵為球隊編號,值為球隊類.

HashMap<String,?Team>?teams?=?new?HashMap<String,?Team>();

//?循環命名,用於指定退出和繼續.

Loop:?while?(true)?{

//?打印選項

System.out.println("1.添加球隊?2.查看球隊?3.刪除球員信息?4.導出球隊信息?5.退出");

String?option?=?sc.nextLine();

switch?(option)?{

case?"1":? //?1.添加球隊

addTeam(teams);

break;

case?"2":? //?2.查看球隊

viewTeam(teams);

break;

case?"3": //?3.刪除球員

deletePlayer(teams);

break;

case?"4":? //?4.導出信息

exportInfo(teams);

break;

case?"5":? //?5.退出系統

exit();

sc.close();?//?退出此系統之前關閉輸入流.

break?Loop;

default:? //?其他情況

System.out.println("錯誤輸入,請重新輸入:");

continue?Loop;

}

}

}

//?根據球隊編號添加隊伍,添加隊伍的同時在球隊中添加球員對象.

public?static?void?addTeam(Map<String,?Team>?teams)?{

System.out.println("請輸入球隊編號:");

String?teamID?=?sc.nextLine();

//?創建新球隊對象.

Team?team?=?new?Team();

team.setTeamID(teamID);

//?把創建的球隊對象加入map映射中.

teams.put(teamID,?team);

System.out.println("請輸入球隊名字:");

String?teamName?=?sc.nextLine();

team.setTeamName(teamName);

System.out.println("請輸入球隊所在城市:");

String?teamCity?=?sc.nextLine();

team.setTeamCity(teamCity);

//?新建壹個布爾變量用於判斷是否繼續添加.

boolean?flag?=?true;

while?(flag)?{

System.out.println("請輸入球員名字:");

String?playerName?=?sc.nextLine();

System.out.println("請輸入球員場均得分:");

double?pointsPerGame?=?sc.nextDouble();

sc.nextLine();

System.out.println("請選擇球員類型:?1.前鋒?2.中鋒?3.後衛");

//?新建壹個position變量,判斷添加的球員類型.

int?position?=?sc.nextInt();

sc.nextLine();

if?(position?==?1)?{

Forward?player?=?new?Forward();

team.setPlayers(player);

player.setPlayerPosition("前鋒");

System.out.println("請輸入場均籃板:");

double?reboundsPerGame?=?sc.nextDouble();

sc.nextLine();

player.setPlayerName(playerName);

player.setPointsPerGame(pointsPerGame);

player.setReboundsPerGame(reboundsPerGame);

}?else?if?(position?==?2)?{

Center?player?=?new?Center();

team.setPlayers(player);

player.setPlayerPosition("中鋒");

System.out.println("請輸入場均蓋帽:");

double?blocksPerGame?=?sc.nextDouble();

sc.nextLine();

player.setPlayerName(playerName);

player.setPointsPerGame(pointsPerGame);

player.setBlocksPerGame(blocksPerGame);

}?else?{

Guard?player?=?new?Guard();

team.setPlayers(player);

player.setPlayerPosition("後衛");

System.out.println("請輸入場均助攻:");

double?assistsPerGame?=?sc.nextDouble();

sc.nextLine();

player.setPlayerName(playerName);

player.setPointsPerGame(pointsPerGame);

player.setAssistsPerGame(assistsPerGame);

}

System.out.println("是否繼續添加:(Y/N)");

String?isAdd?=?sc.nextLine();

if?(isAdd.equalsIgnoreCase("y"))

flag?=?true;

else

flag?=?false;

}

System.out.println("球隊編號\t球隊名稱\t球隊所在城市");

System.out.println(team.getTeamID()?+?"\t\t"?+?team.getTeamName()?+?"\t\t"?+?team.getTeamCity());

}

//?根據隊伍,輸出球員信息.

public?static?void?viewTeam(Map<String,?Team>?teams)?{

//?用keySet方法取出map映射中的鍵.用於叠代取Team對象.

Set<String>?keyset?=?teams.keySet();

for?(Iterator<String>?itt?=?keyset.iterator();?itt.hasNext();)?{

String?tmp?=?itt.next();

Team?team?=?teams.get(tmp);

System.out.println("球隊編號\t球隊名稱\t球隊所在城市");

System.out.println(team.getTeamID()?+?"\t\t"?+?team.getTeamName()?+?"\t\t"?+?team.getTeamCity());

//?得到Team對象之後,叠代其中的ArrayList,其中存儲了球員對象.

System.out.println("球員名字\t場均得分\t球員類型");

for?(Iterator<Player>?itp?=?team.getPlayers().iterator();?itp.hasNext();)?{

Player?player?=?itp.next();

if?(player.getPlayerPosition().equals("前鋒"))

player?=?(Forward)?player;

else?if?(player.getPlayerPosition().equals("中鋒"))

player?=?(Center)?player;

else

player?=?(Guard)?player;

System.out.println(player);

}

}

}

//?先根據球隊編號,再刪除球員,如沒有球隊/員則會提示.

public?static?void?deletePlayer(Map<String,?Team>?teams)?{

System.out.println("請輸入要刪除的球隊編號");

String?teamID?=?sc.nextLine();

//?判斷map映射中是否存在輸入的球隊編號,無則跳回選擇界面.

if?(teams.containsKey(teamID))?{

Team?team?=?teams.get(teamID);

System.out.println("請輸入球員姓名:");

String?playerName?=?sc.nextLine();

boolean?flag?=?false;

for?(Iterator<Player>?it?=?team.getPlayers().iterator();?it.hasNext();)?{

Player?tmp?=?it.next();

if?(playerName.equals(tmp.getPlayerName()))?{

flag?=?true;

it.remove();

System.out.println("刪除成功");

break;

}

}

if?(!flag)

System.out.println("刪除失敗,無此球員");

}?else

System.out.println("無此球隊,請重新選擇功能.");

}

//?導出球隊信息到當前目錄.

public?static?void?exportInfo(Map<String,?Team>?teams)?throws?IOException?{

Set<String>?keyset?=?teams.keySet();

//?通過判斷keySet的長度判斷是否輸入過球隊信息.

if?(keyset.size()?!=?0)?{

BufferedWriter?bfw?=?new?BufferedWriter(new?FileWriter("Teams.txt"));

for?(Iterator<String>?it?=?keyset.iterator();?it.hasNext();)?{

String?tmp?=?it.next();

Team?team?=?teams.get(tmp);

bfw.write("球隊編號\t球隊名稱\t球隊所在城市");

bfw.newLine();

bfw.write(team.getTeamID()?+?"\t\t"?+?team.getTeamName()?+?"\t\t"?+?team.getTeamCity());

bfw.newLine();

}

bfw.close();

}?else?{

System.out.println("請先輸入球隊信息,再導出.");

}

}

//?退出系統.

public?static?void?exit()?{

System.out.println("歡迎下次再來.");

}

}

Team.java

import?java.util.ArrayList;

public?class?Team?{

private?String?teamID; //?球隊編號

private?String?teamName; //?球隊名字

private?String?teamCity; //?球隊所在城市

private?ArrayList<Player>?players; //?球員集合

public?Team()?{?//?實例化Team的同時,實例化ArrayList集合.

players?=?new?ArrayList<>();

}

//?各屬性get和set方法

public?String?getTeamID()?{

return?teamID;

}

public?void?setTeamID(String?teamID)?{

this.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?ArrayList<Player>?getPlayers()?{

return?players;

}

//?players的set方法,直接將球員添加到ArrayList中.

public?void?setPlayers(Player?player)?{

players.add(player);

}

}

Player.java

public?class?Player?{

protected?String?playerName; //?球員姓名

protected?double?pointsPerGame; //?場均得分

protected?String?playerPosition; //?球員類型

//?各個屬性的get,set方法

public?String?getPlayerName()?{

return?playerName;

}

public?void?setPlayerName(String?playerName)?{

this.playerName?=?playerName;

}

public?double?getPointsPerGame()?{

return?pointsPerGame;

}

public?void?setPointsPerGame(double?pointsPerGame)?{

this.pointsPerGame?=?pointsPerGame;

}

public?String?getPlayerPosition()?{

return?playerPosition;

}

public?void?setPlayerPosition(String?playerPosition)?{

this.playerPosition?=?playerPosition;

}

//?重寫toString方法,方便輸出

public?String?toString()?{

return?playerName?+?"\t\t"?+?pointsPerGame?+?"\t\t"?+?playerPosition;

}

}

Forward.java

public?class?Forward?extends?Player?{

private?double?reboundsPerGame;?//?場均籃板

//?get,set方法

public?double?getReboundsPerGame()?{

return?reboundsPerGame;

}

public?void?setReboundsPerGame(double?reboundsPerGame)?{

this.reboundsPerGame?=?reboundsPerGame;

}

//?重寫toString方法,方便輸出

public?String?toString()?{

return?playerName?+?"\t\t"?+?pointsPerGame?+?"\t\t"?+?playerPosition?+?"\t\t"?+?"場均籃板\t\t"?+?reboundsPerGame;

}

}

Center.java

public?class?Center?extends?Player?{

private?double?blocksPerGame;?//?場均蓋帽

//?get,set方法

public?double?getBlocksPerGame()?{

return?blocksPerGame;

}

public?void?setBlocksPerGame(double?blocksPerGame)?{

this.blocksPerGame?=?blocksPerGame;

}

//?重寫toString方法,方便輸出

public?String?toString()?{

return?playerName?+?"\t\t"?+?pointsPerGame?+?"\t\t"?+?playerPosition?+?"\t\t"?+?"場均蓋帽\t\t"?+?blocksPerGame;

}

}

Guard.java

public?class?Guard?extends?Player?{

private?double?assistsPerGame;?//?場均助攻

//?get,set方法

public?double?getAssistsPerGame()?{

return?assistsPerGame;

}

public?void?setAssistsPerGame(double?assistsPerGame)?{

this.assistsPerGame?=?assistsPerGame;

}

//?重寫toString方法,方便輸出

public?String?toString()?{

return?playerName?+?"\t\t"?+?pointsPerGame?+?"\t\t"?+?playerPosition?+?"\t\t"?+?"場均助攻\t\t"?+?assistsPerGame;

}

}

除了註釋外有不懂的追問,功能都測試過可以使用,求采納.

  • 上一篇:我是學計算機的,但是我想轉學金融,誰能告訴我學經濟類的前景怎麽樣?
  • 下一篇:作文《我的爸爸中五百萬福利》根據七年級上冊《白兔和月亮》還有《落難的王子》寫哲理文
  • copyright 2024編程學習大全網