【发布时间】:2023-04-10 22:04:01
【问题描述】:
首先,我只想说我是 CS 专业的,我的大学对任何形式的剽窃都有严格的规定,所以任何不说 “的答案都可以试试这个代码” 将不胜感激:) 使用代码来解释很好。无论如何,我的问题。我刚刚达到了一个点,我真的想了解一个尖锐的学习曲线。继承和多态。我的教科书很好地解释了它,我理解这些材料,它只是将它应用到真实的东西上,这对我来说是什么。简而言之,我的作业从一个包含梦幻棒球队(球员和每个球员的统计数据)的文本文件中读取,然后输出一个包含球队全部统计数据的新文本文件。但我的困惑源于连接到文件后的以下过程,其中涉及将扫描仪传递给名为BaseballTeam 的类,该类与名为Player 的超类聚合,然后有两个子类。这是我的司机:
public static final String INPUT_FILE = "baseballTeam.txt";
public static void main(String[] args) {
BaseballTeam team = new BaseballTeam();
Scanner inputStream = null;
try {
inputStream = new Scanner(new File(INPUT_FILE));
team.loadTeam(inputStream);
} catch (FileNotFoundException e) {
System.out.println("File " + INPUT_FILE + " Not Found.");
System.exit(1);
BaseballTeam 类应该创建一个球员引用数组作为实例变量,然后loadTeam() 方法为每种类型的球员(投手、击球手或替补)创建对象。之后,扫描器被交给Player 类中名为loadData() 的方法,然后由其他两个具有相同方法名称的Batter 和Pitcher 类继承。我正在发布我的其他课程(未完成/刚刚开始),以防需要引用结构。
棒球队:
import java.util.Scanner;
public class BaseballTeam {
private static String name;
private static final Player roster = new Player[];
BaseballTeam() {
name = null;
}
public static String getName() {
return name;
}
public static void setName(String aName) {
name = aName;
}
public static void loadTeam (Scanner input) {
}
public static void outputTeam() {
}
public static int calculateTeamWins() {
return 0;
}
public static int calculateTeamSaves() {
return 0;
}
public static double calculateTeamERA() {
return 0;
}
public static double calculateTeamWHIP() {
return 0;
}
public static double calculateTeamBattingAverage() {
return 0;
}
public static int calculateTeamHomeRuns() {
return 0;
}
public static int calculateTeamRBI() {
return 0;
}
public static int calculateStolenBases(){
return 0;
}
}
玩家:
import java.util.Scanner;
public class Player {
private static String name;
private static String position;
Player() {
name = null;
position = null;
}
public static String getName() {
return name;
}
public static void setName(String aName) {
name = aName;
}
public static String getPosition() {
return position;
}
public static void setPosition(String aPosition) {
position = aPosition;
}
public static void loadData(Scanner input) {
}
public static String generateDisplayString() {
return null;
}
}
投手:
import java.util.Scanner;
public class Pitcher extends Player {
private static int wins;
private static int saves;
private static int inningsPitched;
private static int earnedRuns;
private static int hits;
private static int walks;
Pitcher() {
super();
wins = 0;
saves = 0;
inningsPitched = 0;
earnedRuns = 0;
hits = 0;
walks = 0;
}
public static int getWins() {
return wins;
}
public static void setWins(int aWins) {
wins = aWins;
}
public static int getSaves() {
return saves;
}
public static void setSaves(int aSaves) {
saves = aSaves;
}
public static int getInningsPitched() {
return inningsPitched;
}
public static void setInningsPitched(int aInningsPitched) {
inningsPitched = aInningsPitched;
}
public static int getEarnedRuns() {
return earnedRuns;
}
public static void setEarnedRuns(int aEarnedRuns) {
earnedRuns = aEarnedRuns;
}
public static int getHits() {
return hits;
}
public static void setHits(int aHits) {
hits = aHits;
}
public static int getWalks() {
return walks;
}
public static void setWalks(int aWalks) {
walks = aWalks;
}
public static void loadData(Scanner input) {
}
public static String generateDisplayString() {
return null;
}
public static double calculateERA() {
return 0;
}
public static double calculateWHIP() {
return 0;
}
}
还有击球手:
import java.util.Scanner;
public class Batter extends Player {
private static int atBats;
private static int hits;
private static int homeRuns;
private static int rbi;
private static int stolenBases;
Batter() {
super();
atBats = 0;
hits = 0;
homeRuns = 0;
rbi = 0;
stolenBases = 0;
}
public static int getAtBats() {
return atBats;
}
public static void setAtBats(int aAtBats) {
atBats = aAtBats;
}
public static int getHits() {
return hits;
}
public static void setHits(int aHits) {
hits = aHits;
}
public static int getHomeRuns() {
return homeRuns;
}
public static void setHomeRuns(int aHomeRuns) {
homeRuns = aHomeRuns;
}
public static int getRbi() {
return rbi;
}
public static void setRbi(int aRbi) {
rbi = aRbi;
}
public static int getStolenBases() {
return stolenBases;
}
public static void setStolenBases(int aStolenBases) {
stolenBases = aStolenBases;
}
public static void loadData(Scanner input){
}
public static String generateDisplayString() {
return null;
}
public static double calculateBattingAverage() {
return 0;
}
}
再一次,我不是在寻找某人来为我编写程序,我只需要朝着正确的方向轻推,因为我很难围绕面向对象编程的另外两个支柱。目前我所知道的是我需要有一个循环,最好是在loadData() 中的一个循环,这样我就可以从统计数据中对球员进行排序,从击球手中对投手进行排序。只是因为,这是我的教授巧妙地编写的文本文件(为了简洁起见,他将所有投手和所有击球手放在一起,其他五个就在那里):
The Amazing Lamps
Mary Hansen
P 2 1 7 2 3 2
Orville Verde
P 1 0 12 5 12 3
David Nilsen
P 0 0 0 0 0 0
Clark Gable
P 2 0 14 2 10 5
Claw Hammer
P 0 2 2 0 1 1
Random Superhero
P 1 1 4 2 3 1
Noodlearm Johnson
P 0 0 1 5 6 3
Rolando Gerner
P 1 0 12 5 7 6
Norbert Shockey
P 0 0 3 0 3 1
Katinka Erdale
P 0 0 2 1 1 0
Charles Babbage
C 12 2 0 0 0
Funky
1B 19 7 2 4 1
Luke Skywalker
2B 0 0 0 0 1
Sally Field
3B 21 7 1 8 3
Nari Takahashi
SS 22 8 0 3 2
Joe Schmough
OF 20 6 2 5 1
Mary Ennis
OF 19 4 0 2 1
Yvette Crester
OF 15 3 0 1 0
Michael Ellinger
DH 13 5 2 0 0
Alvaro Ochoa
U 6 2 0 0 1
Woodland Being
P
Angel Charley
OF
Professor Trelawny
C
Average Joe
U
Sandy Koufax
P
另外,很抱歉,如果这篇文章违反了任何冗长的规则。只是不知道如何真正进入我的任务的胆量。总结一下我的问题,我迷失了如何使用我的loadTeam() 从 .txt 中获取数据,然后将投手、击球手和替补(没有统计数据的球员)分离到他们自己的对象中,这样我就可以通过通过子类向下传递数据。从数组中创建对象让我很头疼。
【问题讨论】:
-
不清楚你在问什么。要传递一个数组,你传递它的引用,就像任何其他对象一样。 (上面的设计,据我所知很接近,是一种时髦的发型,但可能可以工作。)
-
考虑到主要是代码,我觉得你帖子的长度不是问题;它甚至有助于更好地理解。但是在解释了所有这些之后,我想你忘了写你的实际问题!
-
是的,我现在意识到了。抱歉,咖啡喝多了。我会编辑。
标签: java arrays inheritance file-io polymorphism