andbin ha scritto:
Il concetto di "prossimo"/"precedente" dovrebbe essere rispetto o ad un indice o ad un riferimento ad un oggetto "corrente". Quindi nel tuo caso cosa sarebbe la indicazione del contatto "corrente"?
Anche se sbagliato, io per adesso sto considerando come "corrente" l'ultimo contatto che assegno alla rubrica e quindi in teoria, se dovessi dargli 3 contatti vorrei che tornasse indietro al secondo e che lo stampasse.
Comunque questo è il codice di rubrica:
package it.****.community.*********.prg.rubrica;
import java.util.*;
import java.io.*;
public class Rubrica {
private LinkedList<Contatto> elenco;
private int corrente;
public Rubrica()
{
elenco = new LinkedList<Contatto>();
corrente = -1;
}
public void aggiungiContatto(Contatto contatto)
{
elenco.add(contatto);
corrente +=1;
}
public void eliminaContattoCorrente()
{
if (corrente != -1) {
System.out.println("Il contatto " + elenco.remove(corrente) + " è stato rimosso correttamente");
aggiornaCorrente();
}
return;
}
public void vaiPrecedente(){
/*//if(corrente != -1){
ListIterator<Contatto> listIter = elenco.listIterator(0);
while (listIter.hasNext())
if(listIter.hasPrevious())
System.out.println(listIter.previous());*/
Contatto prev = null;
for (Contatto c : elenco){
if(elenco.equals(o))
}
}
public void vaiProssimo()
{
}
public void aggiornaCorrente(){
int c;
c=corrente;
vaiProssimo();
if(c==corrente){ // se non c'e' un prossimo cerca il precedente
vaiPrecedente();
if(c==corrente) // se non c'e' neanche un precedente
corrente=-1;
}
}
public void stampaCorrente()
{
if(corrente != -1){
System.out.println(elenco.get(corrente));
}
}
public void stampaTutto()
{
System.out.println("Contatti: " + elenco.size());
//System.out.println(elenco.toString());
for(Contatto d:elenco) {
System.out.println(d);
}
}
}
Mentre questo quello del main:
package it.****.community.************.prg.rubrica;
import java.util.*;
import java.io.*;
public class Main {
public static void main(String args[]) throws IOException
{
Rubrica rubr = new Rubrica();
Contatto contatto = null;
int scelta = -1;
try (InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ir))
{
while (scelta != 0)
{
System.out.println("1) Aggiungi contatto privato");
System.out.println("2) Aggiungi contatto lavoro");
System.out.println("3) Elimina contatto corrente");
System.out.println("4) Modifica contatto corrente");
System.out.println("5) Visualizza contatto corrente");
System.out.println("6) Vai al prossimo");
System.out.println("7) Vai al precedente");
System.out.println("8) Stampa tutto");
System.out.println("9) Cancella tutto");
System.out.println("0) Esci");
scelta = Integer.parseInt(in.readLine());
switch(scelta)
{
case 1:
contatto = new Privato();
contatto.visualizza_Nominativi();
rubr.aggiungiContatto(contatto);
break;
case 2:
contatto = new Lavoro();
contatto.visualizza_Nominativi();
rubr.aggiungiContatto(contatto);
break;
case 3:
rubr.eliminaContattoCorrente();
break;
case 4:
break;
case 5:
rubr.stampaCorrente();
break;
case 6:
rubr.vaiProssimo();
break;
case 7:
rubr.vaiPrecedente();
break;
case 8:
rubr.stampaTutto();
break;
case 0:
return;
}
}
}
}
}