lo leggete se lo scrivo in questo modo:
primo file:
codice:
import java.io.*; import java.util.Scanner; public class MiaLista { private ListElem first; public void insertFirst(int val) {// inserisce un elemento all'inizio di una lista ListElem newelem=new ListElem(); newelem.dato=val; newelem.next=first; first=newelem; } // fine di insertFirst public void deleteFirst() { // cancella il primo elemento della lista if(first!=null) first=first.next; } // fine metodo deleteFirst public boolean inLista (int val) { if(first==null) // verifica che la lista non è vuota e se lo è restituisce false return false; // ovvero che non si può inserire nessun elemento in lista else return first.inListaIntern(val); // chiamata ricorsiva } // fine inLista() public boolean modifElem(int oldVal, int newVal) { if(first==null) return false; else return first.modifElemIntern(oldVal, newVal); } public void readListFromFile() { try { File inputFile=new File("dati.txt"); Scanner inputScanner=new Scanner(inputFile); int nxtVal=0; boolean contin=true; while(contin) { //try { nxtVal=inputScanner.nextInt(); insertFirst(nxtVal); //} /*catch(NoSuchElementException nFE) { contin=false; }*/ } } catch(java.io.FileNotFoundException fileNotFound) { System.out.println("il file dati.txt non esiste"); } } public boolean insertAfter(int precElem, int newVal) { if(first==null) return false; else return first.insertAfterIntern(precElem, newVal); } private class ListElem { public int dato; public ListElem next; private boolean inListaIntern(int val) { // cerco il valore val all'interno della lista if(dato==val) { return true; } else { if(next==null) { // se sono arrivata alla fine della lista allora return false; // restituisce false } else { return next.inListaIntern(val); } } } // fine di inListaIntern() private boolean modifElemIntern(int oldVal, int newVal) { // modifica un elemento di una lista if(dato==oldVal) { dato=newVal; return true; } else { if(next==null) return false; else return next.modifElemIntern(oldVal, newVal); } } public ListElem getNext() { return next; } private boolean insertAfterIntern(int precElem, int newVal) { if(dato==precElem) { ListElem nuovoElemento=new ListElem(); nuovoElemento.dato=newVal; nuovoElemento.next=next; next=nuovoElemento; return true; } else { if(next==null) return false; else return next.insertAfterIntern(precElem, newVal); } } } // fine della classe ListElem public void printList() { // visualizza gli elementi di una lista for(ListElem loopElem=first; loopElem!=null; loopElem.getNext()) { System.out.print(loopElem.dato+", "); System.out.println(""); } } // fine del metodo printList() } // fine della classe MiaLista
secondo file:
codice:
import java.io.*; import java.util.Scanner; public class UsaMiaLista { public static void main(String [] args) { Scanner tastiera=new Scanner(System.in); int op=0; //operazione int newval; int oldval; MiaLista inpList=new MiaLista(); inpList.readListFromFile(); System.out.print(" Lista iniziale: "); inpList.printList(); while(op!=9) { System.out.println("\n Operazioni eseguibili:\n"); System.out.println(" 1.Inserimento all'inizio\n 2.Inserimento 'dopo'"); System.out.println(" 3.Inserimento 'prima'\n 4.Cerca elemento in lista"); System.out.println(" 5.Cancellazione\n 6.Modifica\n"); System.out.println(" 9.Fine Operazioni\n "); System.out.println("Quale operazione vuoi fare?\n"); op=tastiera.nextInt(); switch(op) { case 1: System.out.println(" Elemento da inserire? "); newval=tastiera.nextInt(); inpList.insertFirst(newval); System.out.print(" Risultato: "); inpList.printList(); break; case 2: System.out.println(" Elemento da inserire? "); newval=tastiera.nextInt(); System.out.println(" Dopo quale elemento? "); oldval=tastiera.nextInt(); inpList.insertAfter(oldval, newval); System.out.print(" Risultato: "); inpList.printList(); break; case 9: break; default: System.out.println("Operazione non prevista"); break; } // fine dello switch } // fine del while } // fine del main } // fine della classe