•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the Java section within the Software Development category of DaniWeb, a massive community of 456,573 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 3,583 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Java advertiser: Lunarpages Java Web Hosting
Views: 816 | Replies: 9 | Solved
![]() |
•
•
Join Date: Nov 2006
Posts: 19
Reputation:
Rep Power: 2
Solved Threads: 0
In my Java class, we have to randomly create basketball teams and random scores, then average the scores for each team, and average the scores for each game. I am not sure how to average the score for each game, meaning adding scores vertically in a vector versus adding scores horizontally. I have tried using a totaling mechanism in any of the for loops, but of course they all added across, not vertically. What I would like to do is just total the scores vertically, and use seperate code to get the average, much easier I think. The code so far is below:
Java Syntax (Toggle Plain Text)
import java.text.DecimalFormat; import java.util.*; public class Assignment7{ public Vector boardScores = new Vector(); public Vector avgVector = new Vector(); public int numOfTeams = 0; public int numOfGames = 0; public int youScored; public int MintScore; public int RepeatNumbers; public static void main(String args[]){ Assignment7 myStatsBoard = new Assignment7(); myStatsBoard.killMe(); } public Assignment7(){ } public void killMe(){ readNumberOfTeams(); readNumberOfGames(); getTheGameScores(); calculateTheAverage(); displayStatsBoard(); } public void readNumberOfTeams(){ int teamNumbers = 0; Random myRandomTeam = new Random(); boolean stopTheRunaround = false; while(!stopTheRunaround){ teamNumbers = myRandomTeam.nextInt(10); if (teamNumbers > 5){ stopTheRunaround = true; } } setNumberOfTeams(teamNumbers); } public void readNumberOfGames(){ Random myRandomTeam = new Random(); int gameNumber = myRandomTeam.nextInt(12); while(gameNumber <= 6){ gameNumber = myRandomTeam.nextInt(12); } setNumberOfGames(gameNumber); } public void getTheGameScores(){ RepeatNumbers = 0; //I initialize RepeatNumbers to for (int i = 0; i < getNumberOfTeams(); i ++){ //use to capture numbers from Vector teamVector = new Vector(); //vector. RepeatNumbers = (Integer) teamVector.get(i); //<-- Test if this will get me for (int j = 0; j < getNumberOfGames(); j++){//the numbers vertically, but teamVector.add("" + getMyNumberNow()); //creates error when } //trying to build program. boardScores.add(teamVector); } } public int getMyNumberNow(){ Random myRandomTeam = new Random(); int nextStupidRandomNumber = 0; while(nextStupidRandomNumber < 1 || nextStupidRandomNumber > 150){ nextStupidRandomNumber = myRandomTeam.nextInt(1500); } return nextStupidRandomNumber; } public void calculateTheAverage(){ int TotalScore = 0; for (int i = 0; i < getNumberOfTeams(); i++){ Vector teamVector = (Vector) boardScores.get(i); for (int j = 0; j < getNumberOfGames(); j++){ String whatScore = (String) teamVector.get(j); MintScore = Integer.parseInt(whatScore); youScored = youScored + MintScore; } double averageScore = (double) youScored / getNumberOfGames(); avgVector.add("" + averageScore); } } public void displayStatsBoard(){ DecimalFormat format = new DecimalFormat("###,###,##0.00"); System.out.println("\n\nThis is Steven Peterson's Scorecard\n\n"); System.out.println("Total Teams: " + getNumberOfTeams()); System.out.println("Total Games: " + getNumberOfGames()); System.out.println("\n\nTeam Scoreboard\n"); System.out.print("\t\t"); for (int k = 0; k < getNumberOfGames(); k++){ System.out.print("Game" + (k + 1) + "\t"); } System.out.print("Average"); for (int i = 0; i < getNumberOfTeams(); i ++){ System.out.print("\nTeam " + (i + 1) + "\t\t"); Vector teamVector = (Vector) boardScores.get(i); for (int j = 0; j < getNumberOfGames(); j++){ String whatScore = (String) teamVector.get(j); System.out.print(whatScore + "\t"); } String avg = (String) avgVector.get(i); double dblAvg = Double.parseDouble(avg); System.out.print(format.format(dblAvg)); } System.out.println(""); System.out.println(""); } public int getNumberOfTeams(){ return numOfTeams; } public int getNumberOfGames(){ return numOfGames; } public void setNumberOfGames(int _numberOfGames){ numOfGames = _numberOfGames; } public void setNumberOfTeams(int _numberOfTeams){ numOfTeams = _numberOfTeams; } }
A vector is nothing more than an indexed collection of objects. A vector is also an object, which can therefore reside in a vector - a collection of collections. It's the same as a two dimensional array.
Doing the math on these is now just a matter of writing the loops over the teams and their scores.
Vector teams = new Vector(numberOfTeams);
for (int i=0; i<numberOfTeams; i++){
Vector team = new Vector(numberOfGames);
for (int j=0; j<numberOfGames; j++){
int gameScore = generateScore(); // some method to generate a random score
team.add( gameScore );
}
teams.add( team );
}•
•
Join Date: Nov 2006
Posts: 19
Reputation:
Rep Power: 2
Solved Threads: 0
I am such a newb at programming. Where exactly would I put this code? There are several for loops already or is this a totally different method that I would have to create? I am just not grasping this whole thing, sorry guys if I come off like a moron, I am just trying to learn. I thank everyone for their help so far though.
Well, it kind of replaces all of these methods to generate the data for team scores for each game. Your averages method(s) needs to loop through this info to make its calculations.
readNumberOfTeams(); readNumberOfGames(); getTheGameScores();
Last edited by Ezzaral : Oct 31st, 2007 at 11:58 am.
•
•
Join Date: Nov 2006
Posts: 19
Reputation:
Rep Power: 2
Solved Threads: 0
Alright, I have tried to rewrite it from scratch again with some help. There are two problems, but I think much smaller. The first is error correction, because sometimes the random will go above the limits, and the other is that it will average for each individual game now, but for the individual teams, it will average one correctly and the rest will copy that average. Sorry about the runtime errors that you get sometimes when trying to run the program. Anyways, the new code is below:
java Syntax (Toggle Plain Text)
import java.text.DecimalFormat; import java.util.*; public class Assignment7 { public Vector sumTeams = new Vector(); public Vector getNumGames = new Vector(); public double teamAverate = 0; private Vector vecTeams = new Vector(); private int NumGames; private int NumTeams; private static final int MinGames = 1; private static final int MinTeams = 1; private static final int MinScore = 0; private static final int MaxScore = 100; public static void main(String[] args) { Assignment7 gameBoard = new Assignment7(); gameBoard.execute(); } public Assignment7(){ Scanner input = new Scanner(System.in); System.out.println("Welcome to the scoreboard\n\n"); System.out.print("Enter maximum number of teams: "); setNumTeams(getRandom(MinTeams,input.nextInt())); System.out.print("Enter maximum number of games: "); setNumGames(getRandom(MinGames,input.nextInt())); System.out.println("\n\n"); } public void execute(){ PopulateVector(); ShowResults(); } private void PopulateVector () { Vector vecGames; for (int i = 0; i < getNumTeams(); i++) { vecGames = new Vector(); for (int j = 0; j < getNumGames(); j++) { vecGames.add(getRandom(MinScore, MaxScore)); } vecTeams.add(vecGames); } } private void ShowResults () { Vector sumGames = new Vector(); Integer tempSumGames = 0; Integer tempSumTeams = 0; for (int i = 0; i < getNumGames(); i++) { sumGames.add((Integer) 0); } for (int i = 0; i < getNumTeams(); i++) { Vector myVec = (Vector) vecTeams.elementAt(i); for (int j = 0; j < getNumGames(); j++) { tempSumTeams = tempSumTeams + (Integer) myVec.elementAt(j); tempSumGames = (Integer) myVec.elementAt(j); sumGames.set(j, (Integer) sumGames.elementAt(j) + (Integer) myVec.elementAt(j)); } sumTeams.add(tempSumTeams); tempSumTeams = 0; } report(sumGames, sumTeams, vecTeams); } private void report (Vector sumGame, Vector sumTeam, Vector Data){ DecimalFormat format = new DecimalFormat("###,###,##0.00"); boolean isFirst = true; for (int i = 0; i < getNumTeams(); i++) { Vector myVec = (Vector) Data.elementAt(i); if (isFirst) { System.out.print("\t\t"); for (int j = 0; j < getNumGames(); j++) { System.out.print("Game" + (j + 1) + "\t\t"); } System.out.print("Average\n"); isFirst = false; } System.out.print("Team" + (i + 1) + "\t\t"); int teamTotal = 0; int gamePlay = 0; double DteamTotal = 0; double DgamePlay = 0; double teamAverage = 0; for (int j = 0; j < getNumGames(); j++) { teamTotal = (Integer) sumTeams.elementAt(j); System.out.print("s" + (j +1) + ": " + sumTeams.elementAt(i) + " "); gamePlay = getNumGames(); DteamTotal = teamTotal; DgamePlay = gamePlay; teamAverage = (DteamTotal / DgamePlay); System.out.print(myVec.elementAt(j).toString() + "\t\t"); } System.out.print(teamAverage + "\n"); } System.out.print("\nAverage\t\t"); for (int i = 0; i < getNumGames(); i++) { int finaltotal = (Integer) sumGame.elementAt(i); int numberofteams = (Integer) getNumTeams(); double finalD = finaltotal; double teamsD = numberofteams; double avgGame = (finalD / teamsD); System.out.print(format.format(avgGame) + "\t\t"); } System.out.println("\n\n\n"); System.out.println(sumTeams); System.out.println(getNumGames()); } private int getRandom(int min, int max) { return (int)Math.round( Math.random() * max + min ); } private int getNumGames() { return NumGames; } private void setNumGames(int _NumGames) { NumGames = _NumGames; } private int getNumTeams() { return NumTeams; } private void setNumTeams(int _NumTeams) { NumTeams = _NumTeams; } }
Last edited by speterson : Nov 1st, 2007 at 4:36 pm. Reason: Private Info
•
•
Join Date: Nov 2006
Posts: 19
Reputation:
Rep Power: 2
Solved Threads: 0
Now, I hope no one is trying to take the code for themselves, as this is for my class, and the last thing I want to see is everyone using this code, but use it as an example. The new corrected code looks like this:
java Syntax (Toggle Plain Text)
import java.text.DecimalFormat; import java.util.*; public class Assignment7 { public Vector sumTeams = new Vector(); public Vector getNumGames = new Vector(); public double teamAverate = 0; private Vector vecTeams = new Vector(); private int NumGames; private int NumTeams; private static final int MinGames = 1; private static final int MinTeams = 1; private static final int MinScore = 0; private static final int MaxScore = 100; public static void main(String[] args) { Assignment7 gameBoard = new Assignment7(); gameBoard.execute(); } public Assignment7(){ Scanner input = new Scanner(System.in); System.out.println("Welcome to the scoreboard\n\n"); System.out.print("Enter maximum number of teams: "); setNumTeams(getRandom(MinTeams,input.nextInt())); System.out.print("Enter maximum number of games: "); setNumGames(getRandom(MinGames,input.nextInt())); System.out.println("\n\n"); } public void execute(){ PopulateVector(); ShowResults(); } private void PopulateVector () { Vector vecGames; for (int i = 0; i < getNumTeams(); i++) { vecGames = new Vector(); for (int j = 0; j < getNumGames(); j++) { vecGames.add(getRandom(MinScore, MaxScore)); } vecTeams.add(vecGames); } } private void ShowResults () { Vector sumGames = new Vector(); Integer tempSumGames = 0; Integer tempSumTeams = 0; for (int i = 0; i < getNumGames(); i++) { sumGames.add((Integer) 0); } for (int i = 0; i < getNumTeams(); i++) { Vector myVec = (Vector) vecTeams.elementAt(i); for (int j = 0; j < getNumGames(); j++) { tempSumTeams = tempSumTeams + (Integer) myVec.elementAt(j); tempSumGames = (Integer) myVec.elementAt(j); sumGames.set(j, (Integer) sumGames.elementAt(j) + (Integer) myVec.elementAt(j)); } sumTeams.add(tempSumTeams); tempSumTeams = 0; } report(sumGames, sumTeams, vecTeams); } private void report (Vector sumGame, Vector sumTeam, Vector Data){ DecimalFormat format = new DecimalFormat("###,###,##0.00"); boolean isFirst = true; for (int i = 0; i < getNumTeams(); i++) { Vector myVec = (Vector) Data.elementAt(i); if (isFirst) { System.out.print("\t\t"); for (int j = 0; j < getNumGames(); j++) { System.out.print("Game" + (j + 1) + "\t\t"); } System.out.print("Average\n"); isFirst = false; } System.out.print("Team" + (i + 1) + "\t\t"); int teamTotal = 0; int gamePlay = 0; double DteamTotal = 0; double DgamePlay = 0; double teamAverage = 0; for (int j = 0; j < getNumGames(); j++) { teamTotal = (Integer) sumTeams.elementAt(i); gamePlay = getNumGames(); DteamTotal = teamTotal; DgamePlay = gamePlay; teamAverage = (DteamTotal / DgamePlay); System.out.print(myVec.elementAt(j).toString() + "\t\t"); } System.out.print(format.format(teamAverage) + "\n"); } System.out.print("\nAverage\t\t"); for (int i = 0; i < getNumGames(); i++) { int finaltotal = (Integer) sumGame.elementAt(i); int numberofteams = (Integer) getNumTeams(); double finalD = finaltotal; double teamsD = numberofteams; double avgGame = (finalD / teamsD); System.out.print(format.format(avgGame) + "\t\t"); } System.out.println("\n\n\n"); } private int getRandom(int min, int max) { return (int)Math.round( Math.random() * max + min ); } private int getNumGames() { return NumGames; } private void setNumGames(int _NumGames) { NumGames = _NumGames; } private int getNumTeams() { return NumTeams; } private void setNumTeams(int _NumTeams) { NumTeams = _NumTeams; } }


