Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    1

    invocare un metodo che printi il nome del più alto

    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

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: invocare un metodo che printi il nome del più alto

    Originariamente inviato da anpatto
    ma se volessi un metodo in class pers che invocato mi restituisca lo stesso risultato, che potrei fare?
    Un metodo del genere nella classe pers (parentesi: pessimo nome che tra l'altro non segue le convenzioni java) ha poco senso, ma è più una questione di design...

    Originariamente inviato da anpatto
    naturalmente questo mio esempio è a 3oggetti, gli if sono relativamente pochi, e se fossero di più gli oggetti(mettiamo 50)?
    Usa un array.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3

    Re: invocare un metodo che printi il nome del più alto

    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.