Stai usando un browser non aggiornato. Potresti non visualizzare correttamente questo o altri siti web. Dovreste aggiornare o usare un browser alternativo.
Grazie per i consigli ma purtroppo il codice che mi avete dato non funziona e pensandoci oltre a quello vi è un problema con il tasto break. Se vi sono altre persone che si chiamano robert, il programma si fermerà alla prima persona. Cerco di leggermi i comandi di arraylist per vedere se trovo qualcosa di utile.
Grazie per i consigli ma purtroppo il codice che mi avete dato non funziona e pensandoci oltre a quello vi è un problema con il tasto break. Se vi sono altre persone che si chiamano robert, il programma si fermerà alla prima persona. Cerco di leggermi i comandi di arraylist per vedere se trovo qualcosa di utile.
Non mi sembrava fosse specificato il fatto che si dovesse continuare l'iterazione anche al seugito di un match.
In questo caso è sufficiente togliere il break al mio codice, come ha fatto notare Egerfaust.
Ps. mi permetto anche di suggerirti di definire le cose con nomi più accurati :) "tasto break"... è un'istruzione. I "comandi di arraylist", sono metodi.
- - - Updated - - -
Mostra l'intero codice al seguito delle modifiche, così vediamo il quadro completo.
Non mi sembrava fosse specificato il fatto che si dovesse continuare l'iterazione anche al seugito di un match.
In questo caso è sufficiente togliere il break al mio codice, come ha fatto notare Egerfaust.
Ps. mi permetto anche di suggerirti di definire le cose con nomi più accurati :) "tasto break"... è un'istruzione. I "comandi di arraylist", sono metodi.
- - - Updated - - -
Mostra l'intero codice al seguito delle modifiche, così vediamo il quadro completo.
Oddio sinceramente non mi ero accorto di aver scritto tasto :lol:. Comunque la cosa del break, è una cosa logica a cui non ci avevo fatto caso.
Comunque il seguente codice che hai postato a me non funzionava con e senza il break.
int i = 0;
while(i++ < rubrica.size()) {
if(rubrica.get(i).getNome().equals(chiave)) {
System.out.println(rubrica.get(i));
break;
}
}
Non l'avevo provato quel codice, l'ho scritto qui. Ad occhio ho commesso l'errore sull'if, non avrei dovuto sottrarre 1.
Tutte le mie considerazioni relative espresse nei precedenti post rimangono (come i getter ed il gestire l'aggiunta degli Item in quell'altro modo, dove sarebbe stato corretto fornire un metodo per ottenere il nominativo cercato con i relativi dati magari).
Visto che ci hai provato, ho scritto due righe di esempio.
Non l'avevo provato quel codice, l'ho scritto qui. Ad occhio ho commesso l'errore sull'if, non avrei dovuto sottrarre 1.
Tutte le mie considerazioni relative espresse nei precedenti post rimangono (come i getter ed il gestire l'aggiunta degli Item in quell'altro modo, dove sarebbe stato corretto fornire un metodo per ottenere il nominativo cercato con i relativi dati magari).
Visto che ci hai provato, ho scritto due righe di esempio.
Grazie mille, lo apprezzo molto :ok:. Solo una curiosità non capisco il ruolo svolto dalle if nel main.java. Tu hai creato 4 nuovi item, e infine hai creato altre 4 if in questo modo:
Codice:
import java.util.Scanner;
import java.util.NoSuchElementException;
class Main
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
// Creo una rubrica inizialmente vuota
Rubrica rubrica = new Rubrica();
// Creo 3 Item
Item item1 = new Item("Roberto", "Via qualcosa", "123456789");
Item item2 = new Item("Robert", "via qualcosa", "987654321");
Item item3 = new Item("Robertino", "via qualcosa", "8873662233");
Item item4 = new Item("Rob", "via qualcosa", "123456789");
if(!rubrica.aggiungiItem(item1))
{
System.out.println(item1+"\n\tNon aggiunto!");
}
if(!rubrica.aggiungiItem(item2))
{
System.out.println(item2+"\n\tNon aggiunto!");
}
if(!rubrica.aggiungiItem(item3))
{
System.out.println(item3+"\n\tNon aggiunto!");
}
if(!rubrica.aggiungiItem(item4))
{
System.out.println(item4+"\n\tNon aggiunto!");
}
/* Nome da cercare e ricerca */
System.out.println("\nNominativo da cercare: ");
String nome = "";
try
{
nome = input.nextLine();
} catch(NoSuchElementException ex)
{
ex.printStackTrace();
}
Item item = rubrica.getItem(nome);
if(item == null)
{
System.out.println("Nominativo non esistente!");
} else
{
System.out.println(item);
}
}
}
Qual'è il ruolo della if? e dato che ne hai fatta una per ogni nuovo item creato non ci sarebbe modo di accorciare la cosa tramite un for each?
Le if nel main.java testano che il valore sia stato effettivamente aggiunto. In una situazione reale aggiungeresti un elemento quando richiesto, quindi avresti magari una funzione incaricata che riceve il nuovo elemento a seguito di un evento. Quindi restituire un true/false ha senso.
Se fossero memorizzati in un array (gli item da aggiungere) si potrebbe utilizzare un ciclo for.
In questo caso era per mostrarti come puoi utilizzare il valore booleano di ritorno. In una situazione reale non creeresti probabilmente nemmeno gli item in quel modo, appunto. ;)
Le if nel main.java testano che il valore sia stato effettivamente aggiunto. In una situazione reale aggiungeresti un elemento quando richiesto, quindi avresti magari una funzione incaricata che riceve il nuovo elemento a seguito di un evento. Quindi restituire un true/false ha senso.
Se fossero memorizzati in un array (gli item da aggiungere) si potrebbe utilizzare un ciclo for.
In questo caso era per mostrarti come puoi utilizzare il valore booleano di ritorno. In una situazione reale non creeresti probabilmente nemmeno gli item in quel modo, appunto. ;)
In una situazione reale molto probabilmente non sapresti quanti Item avrai nel software. Sarebbe quindi l'utente ad inserirli, e saresti costretto a gestirli diversamente per averne N in memoria.
In una situazione reale molto probabilmente non sapresti quanti Item avrai nel software. Sarebbe quindi l'utente ad inserirli, e saresti costretto a gestirli diversamente per averne N in memoria.
Non parlavo di campi da personalizzare da parte dell'utente (in quel caso ci sarebbero da affrontare altri aspetti, ma sorvoliamo ora).
Mi riferivo agli Item. Un Item per com'è stato definito è composto da nome, indirizzo, telefono. Quindi servirà un array di Item per tenerli in memoria, dato che non sai a priori quanti ne avrai.
Certamente detto così è riduttivo; lo scenario può cambiare, la progettazione varia. Ad ogni modo un elenco presumibilmente ci sarà.