|
|
|
|
Strumenti |
09-11-2007, 21:59 | #1 |
Member
Iscritto dal: Dec 2006
Messaggi: 53
|
[Java] ordinamento classifica calcio
Ciao a tutti, devo fare un programmino che dato in input una cosa del genere:
4 Brazil Norway Morocco Scotland 6 Brazil#2@1#Scotland Norway#2@2#Morocco Scotland#1@1#Norway Brazil#3@0#Morocco Morocco#3@0#Scotland Brazil#1@2#Norway dopo apposito parsing, mi dà in output una cosa del genere: 1) Brazil 6p, 3g (2-0-1), 3gd (6-3) 2) Norway 5p, 3g (1-2-0), 1gd (5-4) 3) Morocco 4p, 3g (1-1-1), 0gd (5-5) 4) Scotland 1p, 3g (0-1-2), -4gd (2-6) Quindi ordinata per punteggio, in caso di parità per partite vinte, in caso per differenza goal. Io ho scritto una cosa così per il momento: Codice:
class Squadra implements Comparable<Squadra>{ private String name; private int score; public Squadra(String name) { this.name = name; score= 0; } public String getName() {return name;} public int getScore() {return score;} public void setScore(int score) {this.score=score;} //Si mette il vincolo che ogni squadra abbia nome univoco. public int hashCode() {return name.hashCode();} public boolean equals(Object obj) { if(obj instanceof Squadra) return ((Squadra)obj).getName().equals(name); return false; } public String toString(){ return name+" "+score+"p"; } public int compareTo(Squadra s) { if(name.equals(s.getName())) return 0; int result = score-s.getScore(); if(result==0) result = name.compareTo(s.getName()); return result; } } class Classifica { public HashMap map; public ArrayList squadre; public Classifica() { map = new HashMap(); squadre = new ArrayList(); } public boolean add(String name) { if(map.containsKey(name)) { return false; } Squadra s = new Squadra(name); map.put(name, s); squadre.add(s); return true; } public boolean remove(String name) { if(!map.containsKey(name)) { return false; } Squadra s = (Squadra) map.remove(name); squadre.remove(s); return true; } public boolean addPoint(String name, int point) { if(!map.containsKey(name)) { return false; } Squadra s = (Squadra)map.get(name); s.setScore(s.getScore()+point); return true; } public int getScore(String name){ Squadra s = (Squadra)map.get(name); return (s.getScore()); } public static void main(String args[]) { BufferedReader input; String in2,in3,in4,in5; Classifica clas = new Classifica(); try { System.out.println("Dammi il numero delle squadre: "); input = new BufferedReader(new InputStreamReader(System.in)); in2 = input.readLine(); System.out.println("Dammi i nomi delle squadre: "); for (int i=0;i<Integer.valueOf(in2);i++) { in3 = input.readLine(); clas.add(in3); } System.out.println("Dammi il numero degli incontri: "); in4 = input.readLine(); System.out.println("Dammi gli incontri: "); for (int i=0;i<Integer.valueOf(in4);i++) { in5 = input.readLine(); int g1 = in5.indexOf("#")+1; int g2 = in5.indexOf("@")+1; String goal1 = in5.substring(g1,g1+1); String goal2 = in5.substring(g2,g2+1); if (Integer.valueOf(goal1)>Integer.valueOf(goal2)) { clas.addPoint(in5.substring(0,g1-1),3); clas.addPoint(in5.substring(g2+2,in5.length()),0); } if (Integer.valueOf(goal1)<Integer.valueOf(goal2)) { clas.addPoint(in5.substring(0,g1-1),0); clas.addPoint(in5.substring(g2+2,in5.length()),3); } if (Integer.valueOf(goal1)==Integer.valueOf(goal2)) { clas.addPoint(in5.substring(0,g1-1),0); clas.addPoint(in5.substring(g2+2,in5.length()),0); } } } catch (Exception ex) { } } } garzie mille a tutti..ciao |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:03.