Dati 2 TDA ( di es precedenti), si scirva il programma Partita che legge da tastiera utilizzando i metodi della classe Leggi la squadra e il massimo numero di giocatori e crea il TDA corrispondente, in seguito legge 2 interi n e m da tastiera, se n > m li scambia e poi legge da tastiera i dati di m giocatori e li aggiunge al referto. Infine legge n numeri di maglia e punteggi, controlla che ci sia un giocatore a referto con quel numero di maglia e nel caso imposta il punteggio e alla fine stampa il referto.

Il primo TDA
codice:
class Giocatore {

   public String cognome;
   public String nome;
   public int maglia;

   	  	  
   public Giocatore(String nome, String cognome, int maglia) {
      this.nome = nome;
      this.cognome = cognome;
      this.maglia = maglia;
   }
  		    
   /*restituisce il cognome*/	   
   static String getCognome(Giocatore g) {
      return g.cognome;
   }
     
   /*restituisce il nome*/
   static String getNome(Giocatore g) {
      return g.nome;
   }
   
   /*restituisce il numero della maglia*/
   static int getMaglia(Giocatore g) {
      return g.maglia;
   }

}
Il secondo TDA
codice:
class Referto {
 
  public String squadra;
  public int maxGiocatori;

  private int numGiocatori;
  private Giocatore[] giocatori;
  private int[] punti;
 
  
  public Referto(String squadra, int maxGiocatori) {
    this.squadra = squadra;
    this.maxGiocatori = maxGiocatori;
    this.giocatori = new Giocatore[maxGiocatori];
    this.punti = new int[maxGiocatori];
    this.numGiocatori = 0;
  }


  static void aggiungiGiocatore(Referto r, Giocatore g) {
    if(r.numGiocatori == r.maxGiocatori) {
      System.out.println("TROPPI GIOCATORI");
    }
    else {
      r.giocatori[r.numGiocatori] = g;
      r.numGiocatori++;
    }
  }


  static void setPunti(Referto r, Giocatore g, int punti) {
  for(int i=0; i<r.giocatori.length; i++){
      if(r.giocatori[i]==g) {
      System.out.println("Il punteggio prima era di: "+r.punti[i]);
	  r.punti[i] = punti;
	  System.out.println("Il punteggio ora è di: "+r.punti[i]);
      }
  }
  }
  
  static String getGiocatore(Referto r, int maglia) {
  int i = 0;
  for(i = 0; i < r.giocatori.length; i++) {
	   Giocatore g = r.giocatori[i];
	if (Giocatore.getMaglia(g) == maglia) {
	break;
    }
  }	
  return (r.giocatori[i].getNome(r.giocatori[i]));
  }
  
  static boolean presente(Referto r, int maglia) {
  int x = 0;
  for(int i = 0; i < r.giocatori.length; i++) {
	if (r.giocatori[i].getMaglia(r.giocatori[i]) == maglia) {
	x++;
	break;
	}
  }
  if (x == 1) {
	  return true;
  }else{
	  return false;
  }
  }
   
  static void stampaReferto(Referto r) {
    for(int i= 0; i < r.giocatori.length; i++) {
       Giocatore g = r.giocatori[i];
       if(g != null)
          System.out.println(Giocatore.getCognome(g) 
		  + " " + Giocatore.getNome(g) 
		  + " (" + Giocatore.getMaglia(g) + ") " 
		  + (r.punti[i] > 100 ? "Incredibile!" : r.punti[i]));
    } 
  }

}
L'esercizio:
codice:
class Partita {
  public static void main(String[] args) {
    	
	System.out.println("Inserisci squadra e numero max giocatori(min di 21)");
	
	String squadra = Leggi.unoString();
	int maxG = Leggi.unInt(); // legge un intero e lo mette in maxG...
	
	Referto referto = new Referto(squadra,maxG); 
	
	System.out.println("Inserisci 2 numeri da tastiera minori o uguali a "+maxG);
	
	int n = Leggi.unInt();
	int m = Leggi.unInt();
	
	if ( n > m ) {	
		int z = m;		
		m = n;		
		n = z;
	}
	System.out.println("Inserisci i dati (nome,cognome,numero) di "+m+"giocatori");
	
	Giocatore[] giocatori = new Giocatore[m];

	for(int i = 1; i < giocatori.length; i++) {
	  System.out.println("\nInserisci i dati (nome,cognome,numero) del giocatore "+i);
	  Giocatore a = new Giocatore ((Leggi.unoString()),(Leggi.unoString()),(Leggi.unInt()));
	  giocatori[i] = a;
	  referto.aggiungiGiocatore(referto,a);	  
    }
	referto.stampaReferto(referto);
    
	int z = n;
	
	while ( z > 0 ) {
		  
	      System.out.println("Inserisci "+z+" maglie e i relativi punteggi");
          
		  System.out.println("Inserisci il numero di maglia");
		  int magl = Leggi.unInt();
		  System.out.println("Inserisci il punteggio realizzato");
		  int punt = Leggi.unInt();		  
		  
		  
		  if (referto.presente(referto,magl)) {
			  
			  System.out.println("Il giocatore esiste: "+referto.presente(referto,magl));
		       
			  System.out.println("Dammi il giocatore: "+referto.getGiocatore(referto,magl));
			  
			referto.setPunti((referto),(referto.getGiocatore(referto,magl)),(punt));  
		  }
		  System.out.println("FINO A QUI");
		  		
    }
	
	referto.stampaReferto(referto);
	
 }
}
Mi da il seguente errore ( ma l'errore l'ho capito e che non riesco a risolverlo..)
javac "Partita.java" (nella cartella: /home/luca/Scrivania)
Partita.java:51: setPunti(Referto,Giocatore,int) in Referto cannot be applied to (Referto,java.lang.String,int)
referto.setPunti((referto),(referto.getGiocatore(r eferto,magl)),(punt));
^
1 error
Compilazione fallita.


Mi manca completare l'ultima parte nella quale si devono assegnare i punteggi... ( 1 riga!!!)
se qualcuno ha suggerimenti.. io non ci vengo più a capo...

Grazie...