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
Il secondo TDAcodice: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; } }
L'esercizio: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])); } } }
Mi da il seguente errore ( ma l'errore l'ho capito e che non riesco a risolverlo..)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); } }
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...

Rispondi quotando