|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1192
|
[Java]Domanda: ricerca su dizionario
Ciao!
La prof di informatica ha spiegato archivi e dizionari portando come esempio la classe studente e creando un archivio degli studenti con i vari metodi del dizionario..Io sto provando a riscrivermela, però confrontandomi con la versione della prof non capisco una cosa: nella metodo che effettua la ricerca, lei scrive: Codice:
public Studente find(int codice) throws new NoSuchElementException { Studente stud = new Studente (); Coppia target = new Coppia (codice, stud); int i=0; boolean trovato = false; while (i<dim && !trovato) { if (archivio[i].compareTo(target)==0) trovato=true; else i++; } if (!trovato) throw new NoSuchElementException; else return archivio[i].attributo; } ![]() (se c'è bisogno posto anche la classe Studente e il resto della classe ArchivioStudente..) Vi ringrazio in anticipo ![]()
__________________
blue_blue: nickname proprio di persona, femminile, singolare "Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani) Fiore, sei un mito ![]() Ultima modifica di blue_blue : 01-12-2007 alle 23:03. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2002
Città: Modena
Messaggi: 592
|
Il !trovato trasforma il false dell'inizializzazione in true per far andare il ciclo.
Ovvio che se lo inizializzi a true e togli il not ( ! ) funziona uguale ma perdi il significato di "trovato" in linguaggio naturale. Così infatti dici : finché non trovato... Mettendolo a true e togliendo ! dici: finché trovato ... Ovvio che a livello di compilazione e funzionamento non cambia nulla ma in leggibilità in italiano risulta più facile capire il codice, altrimenti anziché "trovato" andrebbe bene un qualunque nome di variabile per far girare il codice. Ciauz |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
diciamo così....il ! non cambia il senso della variabile...scrivendo !trovato equivale a scrivere trovato==false.
spero che ti sia chiaro
__________________
My gaming placement |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
la parte in rosso mette trovato a false perché in quell'istante dell'esecuzione dell'algoritmo l'elemento cercato di fatto non è stato ancora trovato. dopodiché il while dice letteralmente "fintantoché non l'ho trovato... (lo cerco e se lo trovo metto il flag a true)"; poi dopo l'esecuzione del while dice "se non l'ho trovato allora mi sa tanto che non c'è, ergo lancio un'eccezione".
|
![]() |
![]() |
![]() |
#5 | ||
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1192
|
Quote:
Quote:
![]()
__________________
blue_blue: nickname proprio di persona, femminile, singolare "Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani) Fiore, sei un mito ![]() |
||
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Feb 2002
Città: Modena
Messaggi: 592
|
Quote:
Quando ho scritto che non cambia il senso intendevo: mettere !trovato con trovato inizializzato a false è identico a mettere trovato nella condizione del while con trovato inizializzato a true (ovviamente modificando il codice anche all'interno del while per stoppare il ciclo se trova l'elemento). Ciauz |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
è cos+ ![]()
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1192
|
Quote:
![]() Quindi se io scrivevo Codice:
public Studente find(int codice) throws new NoSuchElementException { Studente stud = new Studente (); Coppia target = new Coppia (codice, stud); int i=0; boolean trovato = true; while (i<dim && !trovato) { if (archivio[i].compareTo(target)==0) trovato=true; else i++; } if (!trovato) throw new NoSuchElementException; else return archivio[i].attributo; } ![]()
__________________
blue_blue: nickname proprio di persona, femminile, singolare "Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani) Fiore, sei un mito ![]() |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Feb 2002
Città: Modena
Messaggi: 592
|
Quote:
Ciauz |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1192
|
Quote:
![]() comunque, dopo questo esempio credo che forse potrei aver capito ![]() Grazie per l'aiuto ![]()
__________________
blue_blue: nickname proprio di persona, femminile, singolare "Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani) Fiore, sei un mito ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:01.