Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class Event {
- private String name;
- private int maxAttempts;
- private boolean biggerBetter;
- private ArrayList<Result> results;
- /**
- * Konstruktor för gren-klassen
- */
- public Event(String name, int maxAttempts, String biggerBetterAns) {
- this.name = name;
- this.maxAttempts = maxAttempts;
- if (biggerBetterAns.equals("yes") || biggerBetterAns.equals("y")) {
- biggerBetter = true;
- } else {
- biggerBetter = false;
- }
- results = new ArrayList<Result>();
- }
- public void printResults() {
- Result res;
- int rank = 1;
- int numSameRes = 0;
- for (int i = 0; i < results.size(); i++) {
- res = results.get(i);
- //Kolla om samma resultat finns
- if (i != 0) {
- if (res.getResult() == results.get(i-1).getResult()) {
- numSameRes++;
- } else {
- if (i == 1) {
- rank++;
- }
- rank = rank + numSameRes;
- numSameRes = 1;
- }
- }
- System.out.println(rank + " " + res.getResult() + " " + res.getName());
- }
- }
- /**
- * Lägg till resultat
- */
- public void addResult(double result, String participantName, String team) {
- Result res;
- Result existingRes;
- boolean foundBetterResult = false;
- // kolla efter tidigare resultat för denna deltagare
- for (int i = 0; i < results.size(); i++) {
- existingRes = results.get(i);
- //deltagarnamnjämförelse
- if (existingRes.getName().equals(participantName)) {
- if (biggerBetter) {
- if (existingRes.getResult() < result) {
- foundBetterResult = true;
- break; // avsluta loop
- }
- } else {
- if (existingRes.getResult() > result) {
- foundBetterResult = true;
- break; // avsluta loop
- }
- }
- }
- }
- if (foundBetterResult) {
- return; // avsluta metod
- }
- // skapa nytt resultat
- res = new Result(result, participantName, name, team);
- //Kolla var i listan resultatet ska ligga
- for (int i = 0; i < results.size(); i++) {
- existingRes = results.get(i);
- if (biggerBetter) {
- if (result > existingRes.getResult()) {
- results.add(i, res); //spara på rätt plats i sorterad lista
- return; // avsluta metod
- }
- } else {
- if (result < existingRes.getResult()) {
- results.add(i, res); //spara på rätt plats i sorterad lista
- return; //avsluta metod
- }
- }
- }
- //spara i sorterad lista
- results.add(res);
- }
- // returnerar en matris med 4 värden per resultat: antal guld, antal silver, antal brons och ett hashvärde för teamnamnet
- public int[][] getTeamResults() {
- int[][] teamResults;
- teamResults = new int[0][4]; // programmet stödjer max 100 olika lag
- int index = 0;
- String team;
- Result res;
- int rank = 1;
- int numSameRes = 0;
- for (int i = 0; i < results.size(); i++) {
- res = results.get(i);
- team = res.getTeam();
- //lägg till team i hashmap
- teamResults = incrementMatrixRowLength(teamResults);
- teamResults[index][0] = 0;
- teamResults[index][1] = 0;
- teamResults[index][2] = 0;
- teamResults[index][3] = team.hashCode();
- //Kolla om samma resultat finns
- if (i != 0) {
- if (res.getResult() == results.get(i-1).getResult()) {
- numSameRes++;
- } else {
- if (i == 1) {
- rank++;
- }
- rank = rank + numSameRes;
- numSameRes = 1;
- if (rank > 3) {
- break;
- }
- }
- }
- teamResults[index][rank-1]++;
- index++;
- }
- return teamResults;
- }
- /**
- * Lägg till 1 rad och bevara data (för int matris)
- */
- private static int[][] incrementMatrixRowLength(int[][] a) {
- int[][] newArray;
- //skapa ny array med dubbel längd
- newArray = new int[a.length+1][4];
- //för över all data till ny array
- for(int i = 0; i < a.length; i++) {
- for(int j = 0; j < a[0].length; j++) {
- newArray[i][j] = a[i][j];
- }
- }
- return newArray;
- }
- public String toString() {
- return name;
- }
- public String getName() {
- return name;
- }
- public int getMaxAttempts() {
- return maxAttempts;
- }
- public boolean getBiggerBetter() {
- return biggerBetter;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement