|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jan 2014
Messaggi: 5
|
Confrontare due oggetti di un array
Salve a tutti !
Mi sono appena iscritto su questo forum perchè non ho molta dimestichezza con il linguaggio java, e sarei molto grato se qualcuno di voi potesse darmi una mano =) Il mio problema è questo : ho creato una classe generica di tipo studente . la classe contiene i seguenti attributi : String nome; String cognome; int eta;. Dopo aver dichiarato costruttore e aver sviluppato i soliti metodi get e set, ho creato un array di tipo studente: studente [] vet = new studente [n]; Solo che adesso non riesco a confrontare gli elementi dello stesso array per trovare il piu' piccolo in base al campo età. ho pensato di fare qualcosa del tipo : if (vet[i].get_eta() < vet [i+1].get_eta()) ma non so come passare il valore dell'indice della posizione dell'elemento piu' piccolo nel main , in modo da poterlo visualizzare ! Ultima modifica di Marcoz91 : 28-01-2014 alle 21:31. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Se ho capito cosa intendi, stai sbagliando algoritmo.
Pensala così: Codice:
Il primo Studente dell'array è quello più piccolo di età.
Per ogni Studente (dal secondo in poi)
- verifica se l'età dello Studente i-esimo è minore di quella del più piccolo
- in caso affermativo, l'i-esimo Studente (quello corrente) è il più piccolo, salvalo.
- altrimenti continua con il prossimo studente.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Jan 2014
Messaggi: 5
|
Praticamente la traccia mi dice di trovare , nell'array vet di tipo studente, l'elemento con l'età minore, il piu' giovane per intederci.
Solo che non riesco a confrontare gli oggetti dell'array tra di loro per trovare il minore. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Quote:
Codice:
vett[i].getEta() <>=ecc.. vett[j].getEta() |
|
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Jan 2014
Messaggi: 5
|
Ci stavo pensando, ma alla fine ho deciso di confrontare solamente le get.
Il problema è che ecplise mi segna ques'ultimo confronto come errore, e in piu' non riesco nemmeno a visualizzare l'elemento con l'età minore. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Si ma devi essere più preciso. Mostra almeno il codice (indentato per piacere)
|
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Jan 2014
Messaggi: 5
|
package uni;
public class metodi { public static void minore (studenti[]vet) { //variabile che conterrà l'indice dell'elemento piu' piccolo int min = 0; //indice array int i=0; for (i=0;i<vet.length;i++){ if (vet[i].get_eta()< vet[i-1].get_eta()){ min=i; } else { min=i+1; } } System.out.println("lo studente piu giovane e"+vet[min]); } } E NELLA CLASSE PRINCIPALE, OVVERO NEL MAIN, RICHIAMO IL METODO: metodi.minore(vet) SOLO CHE QUANDO VADO IN COMPILAZIONE, ECLIPSE MI RILEVA UN ERRORE NEL CONFRONTO "(vet[i].get_eta()< vet[i-1].get_eta()" SCUSATE MA NON SAPEVO COME ALLEGARE IL FILE DI TESTO SINGOLO |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Codice:
public class metodi {
public static void minore(studenti[] vet) {
//variabile che conterrà l'indice dell'elemento piu' piccolo
int min = 0;
//indice array
int i = 0;
for (i = 0; i < vet.length; i++) {
if (vet[i].get_eta() < vet[i - 1].get_eta()) {
min = i;
} else {
min = i + 1;
}
}
System.out.println("lo studente piu giovane e" + vet[min]);
}
}
Se io ho questo codice Codice:
for(int i = 0; i < len; i++)
if(vett[i] < vatt[i - 1])....
Puoi seguire un'altra linea comunque. 1) prendi come elemento più piccolo il primo dell'array, e quindi ti segni l'indice, che per il momento è il minore 2) scorri l'array a partire dall'indice 1 Per ora non ti dico di più. Vediamo i progressi.. |
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Jan 2014
Messaggi: 5
|
Scusate, ho capito da solo il mio errore.
Ho sbagliato semplicemente il passaggio dei parametri, e quindi non riuscivo a stampare l'elemento |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Vedi che quel metodo è completamente sbagliato
Inviato da una supercazzola ed un Nexus 5 scappellato a sinistra.. con senso unico |
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: Aug 2013
Messaggi: 24
|
Come ti sta dicendo clockover, devi confrontare l'elemento che al momento conosci come il più piccolo con tutti i suoi successivi. In pratica:
Se invece non devi ottenere un riferimento all'oggetto Studente con età minore, ma semplicemente trovare il suo indice nell'array, allora basta modificare di poco l'algoritmo, in modo da assegnare alla variabile min non più lo studente, ma il suo indice in vett. E poi prima di affrontare la programmazione orientata agli oggetti dovresti accertarti di essere già a tuo agio con gli algoritmi di base come questo... quello che hai scritto tu, oltre a non funzionare, restituirà sempre un'eccezione ArrayIndexOutOfBounds perché al primo ciclo cerca di accedere a vett[-1]. Ultima modifica di Deep thought : 01-02-2014 alle 16:47. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:21.



















