Originariamente inviato da anpatto
salve a tutti,premetto che è il mio primo messaggio nel forum e spero di non sbagliare.
codice:
class pers{
//attributi
String nome; int altezza;
//costruttore
pers( String n, int h ){
nome=n; altezza = h; }
}
class pp { public static void main (String args []) {
pers p1 = new pers( "andrea", 170 );
pers p2 = new pers ("mario" , 180 );
pers p3 = new pers ("luca", 175 );
if (p1.altezza>p2.altezza && p1.altezza>p3.altezza){
System.out.println( " altissimo " + p1.nome );}
else if (p2.altezza>p3.altezza){
System.out.println( " altissimo " + p2.nome );}
else System.out.println( " altissimo " + p3.nome );
}}
ho semplificato il problema che ho:
ma se volessi un metodo in class pers che invocato mi restituisca lo stesso risultato, che potrei fare?
naturalmente questo mio esempio è a 3oggetti, gli if sono relativamente pochi, e se fossero di più gli oggetti(mettiamo 50)?
grazie
Io ti consiglio un approccio migliore per quanto riguarda l'aspetto delle comparazioni, in quanto Java ti offre la possibilità di scrivere codice più pulito sotto questo punto di vista.
Ecco un esempio che ti consiglio
codice:
/**
* @(#)Persona.java
*
*
* @author Vincenzo
* @version 1.00 2010/11/27
*/
import java.util.LinkedList;
public class Persona implements Comparable{
private String nome;
private int altezza;
/**
* Creates a new instance of <code>Persona</code>.
* @param nome
* @param altezza espressa in cm
*/
public Persona(String nome, int altezza) {
this.nome = nome;
this.altezza = altezza;
}
@Override
public int compareTo(Object o){
if( this.altezza > ((Persona)o).getAltezza() )
return 1;
else if( this.altezza < ((Persona)o).getAltezza() )
return -1;
return 0;
}
public String getNome(){
return nome;
}
public int getAltezza(){
return altezza;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
LinkedList<Persona> persone = new LinkedList<Persona>();
persone.add( new Persona("Alby", 175) );
persone.add( new Persona("Franco", 165) );
persone.add( new Persona("Fabio", 180) );
persone.add( new Persona("Giuseppe", 168) );
persone.add( new Persona("Vito", 178) );
Persona persPiuAlta = persone.get(0);
for(int i = 1; i < persone.size(); i++){
if( persPiuAlta.compareTo( persone.get(i) ) < 0 )
persPiuAlta = persone.get(i);
}
System.out.println(persPiuAlta.getNome() + " e' la persona piu' alta con " + persPiuAlta.getAltezza() + " cm");
}
}
Java dispone anche dell'interfaccia Comparator nel caso in cui hai un classe in cui le comparazioni si fanno piu' complesse in quanto basate su più chiavi.