Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53

    ordinamento per selezione di un array di oggetti

    salve a tutti, vorrei ordinare un array di oggetti tramite l'ordinamento per selezione.
    Avendo nome cognome e voto alunno vorrei ordinarli in ordine alfabetico (dalla a alla z) per cognome. Vi posto quello che sono riuscito a fare per adesso

    ordina.java
    codice:
    public class ordina {
    	private String nom;
    	private String cogn;
    	private int vot;
    	public ordina(String nome,String cognome,int voto){
    		nom=nome;
    		cogn = cognome;
    		vot=voto;
    	}
    	public String getnom(){
    		return nom;
    	}
    	public String getsurname(){
    		return cogn;
    	}
    	public int getresult(){
    		return vot;
    	}
    
    }
    ordinamain.java

    codice:
    import javax.swing.JOptionPane;
    public class ordinamain {
    
    	public static void main(String[] args) {
    		String n;
    		String c;
    		int v;
    		ordina[] ord = new ordina[3];
    		for(int i = 0; i <3;i++){
    			n=JOptionPane.showInputDialog("inserire nome alunno");
    			c= JOptionPane.showInputDialog("inserire cognome alunno");
    			v= Integer.parseInt(JOptionPane.showInputDialog("inserire voto alunno"));
    			ord[i]= new ordina(n,c,v);
    		}
    		
    
    	}
    
    }
    in pratica ho solo creato l'array di oggetti come e dove scrivo l'ordinamento?? avevo pensato di fare una terza classe dove gli passavo i valori dal main ma non so se si puo fare e come si puo fare

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    ho provato a ordinarlo per voto facendo così

    ordina.java

    codice:
    public class ordina {
    	private String nom;
    	private String cogn;
    	private int vot;
    	public ordina(String nome,String cognome,int voto){
    		nom=nome;
    		cogn = cognome;
    		vot=voto;
    	}
    	public String getnom(){
    		return nom;
    	}
    	public String getsurname(){
    		return cogn;
    	}
    	public int getresult(){
    		return vot;
    	}
    
    }
    ordinamento.java

    codice:
    public class ordinamento {
    
    private int[] a;
    	public ordinamento(int[] vot){
    		a = vot;
    	}
    	public void sort(){
    		for(int i =0; i<a.length - 1 ; i++){
    			int minPos = minimumPosition(i);
    			swap(minPos, i );
    		}
    	}
    	private int minimumPosition(int from){
    		int minPos = from;
    		for(int i = from+1; i <a.length; i++){
    			if(a[i] <a[minPos] ){
    				minPos = i;
    			}
    		}
    		return minPos;
    	}
    	private void swap(int i , int j){
    		int temp= a[i];
    		a[i] = a[j];
    		a[j] = temp;
    	}
    	
    
    
    
    	
    }
    ordinaomain.java



    codice:
    import javax.swing.JOptionPane;
    public class ordinamain {
    
    	public static void main(String[] args) {
    		String n;
    		String c;
    		int v;
    		ordina[] ord = new ordina[3];
    		ordinamento or = new ordinamento();  //mi da errore
    		for(int i = 0; i <3;i++){
    			n=JOptionPane.showInputDialog("inserire nome alunno");
    			c= JOptionPane.showInputDialog("inserire cognome alunno");
    			v= Integer.parseInt(JOptionPane.showInputDialog("inserire voto alunno"));
    			ord[i]= new ordina(n,c,v);
    			or = new ordinamento(v);  //mi da errore
    		}
    		
    
    	}
    
    }
    e ovvio che sta qualcosa di sbagliato nella classe ordinamento oppure ho sbagliato a dichiararla nel main cosa sta sbagliato???

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    La classe ordinamento ha un costruttore che riceve un int[]
    E' ovvio quindi che la riga ordinamento or = new ordinamento() ti dia errore visto che non gli stai passando nulla...


    Cerca di dare dei nomi decenti alle classi e segui le convezioni.

    Se la classe rappresenta un alunno, perché si chiama "ordina" e non "Alunno"?
    Se l'attributo si chiama "vot" perché il getter si chiama "getresult"?
    Perché gli attributi li chiami nom, cogn, vot e i parametri del costruttore nome, cognome, voto?

    codice:
    public class Alunno {
    
    	private String nome;
    	private String cognome;
    	private int voto;
    
    	public Alunno(String n, String c, int v) { 
    		nome = n;
    		cognome = c;
    		voto = v;
    	}
    
    	public String getNome() {
    		return nome;
    	}
    
    	public String getCognome() {
    		return cognome;
    	}
    
    	public int getVoto() {
    		return voto;
    	}
    
    }
    Non è più leggibile così?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    Originariamente inviato da Alex'87
    La classe ordinamento ha un costruttore che riceve un int[]
    E' ovvio quindi che la riga ordinamento or = new ordinamento() ti dia errore visto che non gli stai passando nulla...


    Cerca di dare dei nomi decenti alle classi e segui le convezioni.

    Se la classe rappresenta un alunno, perché si chiama "ordina" e non "Alunno"?
    Se l'attributo si chiama "vot" perché il getter si chiama "getresult"?
    Perché gli attributi li chiami nom, cogn, vot e i parametri del costruttore nome, cognome, voto?

    codice:
    public class Alunno {
    
    	private String nome;
    	private String cognome;
    	private int voto;
    
    	public Alunno(String n, String c, int v) { 
    		nome = n;
    		cognome = c;
    		voto = v;
    	}
    
    	public String getNome() {
    		return nome;
    	}
    
    	public String getCognome() {
    		return cognome;
    	}
    
    	public int getVoto() {
    		return voto;
    	}
    
    }
    Non è più leggibile così?
    vabbe apparte la leggibilità mi potresti scrivere cosa dovrei modificare per farlo funzionare??

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da dik1992
    vabbe apparte la leggibilità
    Ti sembrerà banale, quasi una scocciatura, ma è importantissimo ...


    cosa dovrei modificare per farlo funzionare??
    Hai letto la risposta ?


    La classe ordinamento ha un costruttore che riceve un int[]
    E' ovvio quindi che la riga ordinamento or = new ordinamento() ti dia errore visto che non gli stai passando nulla...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    Originariamente inviato da oregon
    Ti sembrerà banale, quasi una scocciatura, ma è importantissimo ...




    Hai letto la risposta ?


    La classe ordinamento ha un costruttore che riceve un int[]
    E' ovvio quindi che la riga ordinamento or = new ordinamento() ti dia errore visto che non gli stai passando nulla...
    ho capito ma mi scrivi come glielo passo ??? sono 5 ore che sto avanti a sto computer e il cervello ormai non mi aiuta molto xD

  7. #7
    Guarda che quel codice di ordinamento ti serve a poco o nulla.
    Intanto cosa vuoi visualizzare? di cosa vuoi fare il sort?

    Se vuoi fare il sort solo del voto non ha molto senso.
    Se vuoi fare il sort degli alunni nell'array in base al voto quel codice non ti serve a nulla.

    Poi perché prima fai?
    ordinamento or = new ordinamento();

    Questa cosa non significa nulla e puoi anche eliminarla.

    inoltre
    or = new ordinamento(v); //mi da errore
    Dentro il for non significa assolutamente nulla...tu dici che vuoi passare il vettore,
    ma in verita gli passi un solo valore int e ovviamente ti dà errore.

    Inoltre la classe ordinamento mi sa molto di copia-incolla da un altro sito.

    Scrivi meglio quello che vorresti fare e rivedi anche il codice nonché il tuo manuale.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    53
    Originariamente inviato da schumy2000
    Guarda che quel codice di ordinamento ti serve a poco o nulla.
    Intanto cosa vuoi visualizzare? di cosa vuoi fare il sort?

    Se vuoi fare il sort solo del voto non ha molto senso.
    Se vuoi fare il sort degli alunni nell'array in base al voto quel codice non ti serve a nulla.

    Poi perché prima fai?
    ordinamento or = new ordinamento();

    Questa cosa non significa nulla e puoi anche eliminarla.

    inoltre
    or = new ordinamento(v); //mi da errore
    Dentro il for non significa assolutamente nulla...tu dici che vuoi passare il vettore,
    ma in verita gli passi un solo valore int e ovviamente ti dà errore.

    Inoltre la classe ordinamento mi sa molto di copia-incolla da un altro sito.

    Scrivi meglio quello che vorresti fa
    re e rivedi anche il codice nonché il tuo manuale.
    in effetti l'ho capiato da un'altro programma che avevo fatto ma che era seolo con un array normale non un'array di oggetti

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.