Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    java.util.noSuchElementException

    Ciao a tutti, qualcuno mi può aiutare a capire come mai mi vengono fuori i seguenti errori quando eseguo il mio programma:
    Exception in thread "main" java.util.noSuchElementException
    at java.util.Scanner.throwFor<Scanner.java:817>
    at java.util.Scanner.next<Scanner.java:1431>
    at java.util.Scanner.nextInt<Scanner.java:2040>
    at java.util.Scanner.nextInt<Scanner.java:2000>
    at MiaLista.readListFromFile<MiaLista.java42>
    at UsaMiaLista.main<UsaMiaLista.java:13

    Il Programma è il seguente:
    Un primo file contiene:

    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



    il secondo è quello che contiene il "main":

    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

    vi ringrazio in anticipo!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Se non lo riposti utilizzando i tag code non inizio nemmeno a leggerlo

    Ah, hai sbagliato sezione... Java ha una propria categoria Un mod provvederà a spostare.

  3. #3

    Re: java.util.noSuchElementException

    Originariamente inviato da RubyDidi
    Ciao a tutti, qualcuno mi può aiutare a capire come mai mi vengono fuori i seguenti errori quando eseguo il mio programma:
    Exception in thread "main" java.util.noSuchElementException
    at java.util.Scanner.throwFor<Scanner.java:817>
    at java.util.Scanner.next<Scanner.java:1431>
    at java.util.Scanner.nextInt<Scanner.java:2040>
    at java.util.Scanner.nextInt<Scanner.java:2000>
    at MiaLista.readListFromFile<MiaLista.java42>
    at UsaMiaLista.main<UsaMiaLista.java:13

    codice:
    	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");
    		}
    	}
    L'errore sta nel modo in cui leggi il file. Il ciclo ha tutti i presupposti per terminare con una eccezione.

  4. #4
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.