Problemi con interi negativi

di il
4 risposte

Problemi con interi negativi

Devo ordinare una serie di squadre in base prima a i punti e se sono uguali in base alla differenza reti.
la differenza reti la calcola in modo giusto solo che quando arrivo a fare il confronto con il segno > le squadre che avevano la differenza reti positiva si ordinano mentre quelle che la avevano negativa spariscono. DIF è DI TIPO INTERO
 private void ordinaSquadre(){
        for (int i = 0; i < squadre.length - 1; i++) {
            for (int j = i + 1; j < squadre.length; j++) {
                if (squadre[j].isGreater(squadre[i])) {
                    swap(i, j);
                }else{
                    if (squadre[j].isEqual(squadre[i])) {
                      if(squadre[j].dif > squadre[i].dif)
                          swap(i,j);
                    }
                }
            }
        }
    }

4 Risposte

  • Re: Problemi con interi negativi

    Ciao, secondo me ci deve essere qualche problema in altre parti del codice (es: come è implementata la funzione di swap?), perché così ad occhio non mi sembra di notare niente di errato.
    L'unica cosa che potresti migliorare, secondo me, è che potresti implementare tutta la logica del confronto all'interno del metodo "isGreater".
    In altre parole, visto che l'ordinamento dipende in primo luogo dai punti e in secondo luogo dalla differenza reti, allora potresti fare così:
    
    public boolean isGreater(Squadra other) {
        if (this.punti > other)
            return true;
        if (this.punti < other)
            return false;
        return this.dif > other.dif;
    }
    
  • Re: Problemi con interi negativi

    @andreazzzzzz: io direi anche un'altra cosa. Ti è stato espressamente chiesto di IMPLEMENTARE un algoritmo di ordinamento? (se lo si fa, tipicamente è per motivi puramente "didattici").
    Se sì, è un conto. Se no, usa pure le funzionalità di sorting offerte dal framework, andando ad implementare Comparable (o forse meglio nel tuo caso) Comparator.
  • Re: Problemi con interi negativi

    Ho fcambiato l'is greater ma continua a darmi lo stesso errore mi potete dire se c'è qualcosa che non torna
    prima controllo i punti e se sono uguali controllo la differenza reti
    @Override
        public boolean isGreater(Ordinabile x){
            dif=gol-subiti;
            boolean bool;
            if( !(x instanceof Squadra)) throw new RuntimeException("errore");
            bool=(punti>((Squadra)x).getPunti()) ? true:false;
            if(!bool){
                bool=(punti==((Squadra)x).getPunti()) ? true:false;
                if(bool){
                    bool=(dif>((Squadra)x).getDif()) ? true:false;
                }
            }
            return bool;
        }
  • Re: Problemi con interi negativi

    HO RISOLTO DIPENDEVA TUTTO DALLA LUNGHEZZA DEL VETTORE CHE ERA TROPPO GRANDE
Devi accedere o registrarti per scrivere nel forum
4 risposte