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

    Exception in thread "main" java.util.NoSuchElementException

    Qualcuno mi sa spiegare a cosa si riferisce questo errore?

    Exception in thread "main" java.util.NoSuchElementException
    at java.util.StringTokenizer.nextToken(Unknown Source)
    at RubricaTestc.elenconum(RubricaTestc.java:49)
    at RubricaTestc.main(RubricaTestc.java:24)

    riguarda questa parte di codice che vi posto :
    codice:
    
    
    
    import java.util.*;
    import java.io.*;
    import java.util.StringTokenizer;
    import java.util.Scanner;
    
    public class RubricaTestc
    {
        static Rubrica1 array[]= new Rubrica1 [100];
        static int pos=0;
        static boolean entra=false;
       static String buffer;
        static String nome;
        static String cognome;
        static String telefono;
    
        public static void main (String args[])
        {
    
          for(int a=0;a<array.length;a++)
          {
            array[a]=new Rubrica1();
          } 
            
    
    elenconum();
            inizio();
            stampa();
           
            for(int r=0;r<array.length;r++) // visualizza il contenuto dell'array
              { 
                System.out.println(array[r].getCognome()+" "+array[r].getNome()+" "+array[r].getTelefono());
              }
        
         
        }
         public static void elenconum() //metodo lettura file
          { 
             try
           {
             
             FileReader file = new FileReader("elenco.txt");
             BufferedReader in = new BufferedReader(file);
             int i=0;
             
             while(in.ready())
             {
               buffer=in.readLine();
               StringTokenizer tokens = new StringTokenizer(buffer);
               array[i].setCognome(tokens.nextToken());
               array[i].setNome(tokens.nextToken());
               array[i].setTelefono(tokens.nextToken());
               i++;
               }
          
             }
           catch(IOException e)
             {e.printStackTrace();}// indica la riga dove si e generata l'eccezione
           System.out.println("caricamento numeri eseguito con successo\n");
                       
           }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ciao!
    Innanzitutto hai un uso alquanto improprio del modificatore "static", per cui ti consiglio di andare a rivedere un po' che cosa implica "static".

    Detto ciò, andiamo a vedere un po' quel ciclo while in cui effettui la lettura del file riga a riga.

    Prova a modificarlo in questo modo:

    codice:
    int i = 0;
    
    while ((buffer = in.readLine()) != null) {
      array[i] = new Rubrica1 (eventuali parametri);
      array[i].setBlablah(blabla)
      ...
      i++;
    }
    il fatto che tu abbia dichiarato un array di elementi Rubrica1 non implica il fatto che ciascuno degli elementi dell'array sia stato inizializzato: hai semplicemente detto alla JVM che lì si deve aspettare un array di 100 elementi che andrà a contenere dei signori Rubrica1 da inizializzare.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Perchè cos'ha static che non va bene?per quanto riguarda il codice che mi hai postato mi da numerosi errori,forse intendevi che non dovevo usare la classe StringTokenizer?oppure cosa ho sbagliato?per quanto riguarda i parametri il costruttore Rubrica1 e non ne ha...ma mi da degli errori se non metto nulla dentro le parentesi!

    codice:
    public static void elenconum() //metodo lettura file
          { 
             try
           {
             
             FileReader file = new FileReader("elenco.txt");
             BufferedReader in = new BufferedReader(file);
             int i=0;
             
             while((buffer=in.ready()) !=null)
             {array[i] = new Rubrica1();//???
               array[i].setCognome(tokens.nextToken());
               array[i].setNome(tokens.nextToken());
               array[i].setTelefono(tokens.nextToken());
               i++;
               }
          
             }

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Prendi spunto
    codice:
    public class Rubrica {
        
        private String nome,cognome,telefono;
    
        public void setNome(String nome) {
            this.nome = nome;
        }
    
        public void setCognome(String cognome) {
            this.cognome = cognome;
        }
    
        public void setTelefono(String telefono) {
            this.telefono = telefono;
        }
    
        public String getNome() {
            return this.nome;
        }
    
        public String getCognome() {
            return this.cognome;
        }
    
        public String getTelefono() {
            return this.telefono;
        }
    
        public String toString() {
            return this.cognome + " " + this.nome + " " + this.telefono;
        }
    
        public Rubrica() {
            this.nome = null;
            this.cognome = null;
            this.telefono = null;
        }
    
    }
    codice:
    import java.io.*;
    import java.util.*;
    
    /**
     *
     * @author Andrea
     */
    public class TestRubrica {
    
        private Rubrica[] array = new Rubrica[100];
        private String filename;
    
        public TestRubrica(String filename) {
            this.filename = filename;
            popolaRubrica();
        }
    
        public String toString() {
            StringBuffer buf = new StringBuffer();
            for (int i = 0; i < array.length && array[i] != null && array[i].getNome() != null; i++) {
                buf.append(array[i].toString()+"\n");
            }
            return buf.toString();
        }
    
        public void popolaRubrica() {
            try {
                BufferedReader br = new BufferedReader(new FileReader(filename));
                String buffer;
                StringTokenizer tokens;
                int i = 0;
    
                while ((buffer = br.readLine()) != null) {
                    tokens = new StringTokenizer(buffer);
                    array[i] = new Rubrica();
                    array[i].setCognome(tokens.nextToken());
                    array[i].setNome(tokens.nextToken());
                    array[i].setTelefono(tokens.nextToken());
                    i++;
                }
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main (String[] args) {
            TestRubrica tr = new TestRubrica("C:/Users/Andrea/Desktop/rubrica.txt");
            System.out.println(tr);
        }
    
    }
    Ci tengo a precisare che comunque non è un buon esempio di programmazione, a cominciare proprio dalla classe Rubrica.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013

    Re: Exception in thread "main" java.util.NoSuchElementException

    Originariamente inviato da Agrigentine
    Ciao Ti scrivo in privato perchè ho bisogno un aiuto urgente in quanto domani ho l'esame di java e quindi vorrei capire perchè il mio programma non funziona se c'è qualche errore di logica o di sintassi ma adesso ho provato quello che mi avevi postato tu e non mi funziona nemmeno mi da questo errore nell esecuzione...non capisco perchè...il file txt l'ho memorizzato nella stessa cartella dove si trovano la classe Rubricaf e TestRubricaf,adesso mi sta sorgendo un dubbio il problema potrebbe essere dovuto al fattoche ho più versioni della jvm?
    java.io.FileNotFoundException: rubricaf.txt (Impossibile trovare il file specificato)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileReader.<init>(Unknown Source)
    at TestRubricaf.popolaRubrica(TestRubricaf.java:28)
    at TestRubricaf.<init>(TestRubricaf.java:15)
    at TestRubricaf.main(TestRubricaf.java:48)


    Scusa se puoi aiutami!!!
    PS: non amo ricevere messaggi privati con richieste tecniche... ancor meno se poi la persona che scrive non può/vuole ricevere messaggi privati di risposta.

    Ad ogni modo, l'errore che ti viene sollevato è un errore relativo al percorso/nome-file. La configurazione della tua jdk/jre dovresti conoscerla tu (in ogni caso, se non vuoi sbatterti a capire come hai configurato la tua JRE, metti il file in qualche cartella nota e scrivine tutto il percorso dalla radice, come ho fatto io nel mio esempio)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.