Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    3

    Errore di esecuzione java (AIUTO!!)

    Ciao a tutti, sto imparando in questi giorni a programmare in java.
    Cosa devo fare di fronte a un errore del tipo:

    'Exception in thread "main" java.lang.NullPointerException
    at PrefixFree1.Add(PrefixFree1.java:16)
    at MainPrefix_free.main(MainPrefix_free.java:25)' ??

    Durante l'esecuzione del programma, riesco a inserire alcune parole (per riempire un vettore di stringhe) finchè non mi compare questo messaggio di errore.
    Non so che fare.
    AIUTATEMI!!
    Grazie.

    Aurora

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    28
    Significa che nel metodo Add della classe PrefixFree1 inserisci una stringa con un indice non compreso tra 0 e n-1 (n dimensione array).
    Ad esempio inserisci una stringa nell'indice 10, ma l'array ha dimensione 5.
    Se posti il codice ti posso dire di più.
    Ciao

  3. #3
    Originariamente inviato da hermanss
    Significa che nel metodo Add della classe PrefixFree1 inserisci una stringa con un indice non compreso tra 0 e n-1 (n dimensione array).
    Ad esempio inserisci una stringa nell'indice 10, ma l'array ha dimensione 5.
    Se posti il codice ti posso dire di più.
    Ciao
    Si tratta di una NullPointerException non di una ArrayOutOfBoundsException.

    Vuol dire che stai tentando di accedere (ad esempio richiamandone un metodo) ad un oggetto che hai dichiarato e che non hai istanziato, pertanto questo oggetto è null.
    Al mio segnale... scatenate l'inferno!

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    3
    Grazie per le tempestive risposte! Ma ancora non riesco a risolvere il mio problema... Vi scrivo il testo dell'esercizio e come ho costruito la classe:

    "[Prefix_free] Un insieme di stringhe si dice prefix free se nessuna stringa dell'insieme è un prefisso di un'altra stringa dell'insieme. Ad esempio, l'insieme {"terre", "terrazzo"} è prefix free mentre l'insieme {"terre", "terrazzo", "terreno"} non è prefix free, perché "terre" è un prefisso di "terreno".
    Definire una classe PrefixFree per gestire insiemi di stringhe prefix free. Il costruttore inizializza l'insieme come vuoto. La classe deve avere due metodi add e prefix. Il metodo add permette di aggiungere una stringa all'insieme se la stringa non viola la proprietà di prefix freeness e ritorna true, altrimenti non fa nulla e ritorna false. Il metodo prefix prende come argomento una stringa str e ritorna la stringa che rappresenta il più lungo prefisso comune tra la stringa str e qualche stringa dell'insieme. Se non c'è un prefisso comune non vuoto ritorna la stringa vuota. "

    Quello che ho fatto è questo che segue (considerate che questo metodo è attuabile solo se prima si ordinano le stringhe del vettore in ordine di lunghezza crescente). Ma credo sia tutto sbagliato!

    public class Prefix_free{
    static String[] prefix_free;
    static String sottoStringa;
    static int conta=0;

    Prefix_free() {prefix_free=null;}

    public static boolean Add(String nuovaStringa){
    for(int i=0;i<prefix_free.length && prefix_free[i]!=null;i++){
    if(prefix_free[i].length()<nuovaStringa.length()){
    int j=0;
    while(j<prefix_free[i].length())
    j++;
    sottoStringa=nuovaStringa.substring(0,j);
    if((prefix_free[i].equals(sottoStringa))==true)
    return false;
    }
    }
    for(int k=0;k<prefix_free.length;k++){
    if(prefix_free[k]!=null)
    conta++;
    else
    k=prefix_free.length;
    }
    prefix_free[conta]=nuovaStringa;
    return true;
    }
    }

    Grazie ragazzi!
    Aurora

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    28
    Si tratta di una NullPointerException non di una ArrayOutOfBoundsException.
    Scusate ho postato di fretta e non mi sono accorto dell'errore.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    3
    Ho scritto di nuovo il programma. Compila ma dà errori in esecuzione. Potete aiutarmi??

    import java.util.*;
    import java.lang.String.*;
    public class PrefixFree2 {
    public static String[] insieme;
    static String nuovaStr;
    public PrefixFree2(){

    insieme=new String[0];
    }
    public static boolean add(String nuovaStringa){
    if(indicatore_freenes(insieme, nuovaStr)==true){
    int m=insieme.length;
    String[] newInsieme=new String[m+1];
    for(int i=0;i<m;i++)
    newInsieme[i]=insieme[i];
    insieme=newInsieme;
    insieme[m]=nuovaStringa;
    return true;
    }
    else
    return false;
    }

    public static boolean indicatore_freenes(String[] insieme, String nuovaParola){
    int i=0;
    while(i<insieme.length){
    int n=insieme[i].length();
    String sottoStringa=nuovaParola.substring(0,n);
    if(insieme[i]==sottoStringa)
    return false;
    else
    i++;
    }
    return true;
    }
    }

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Hai mai sentito parlare del tag CODE? Così non si capisce un accidenti -.-'
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Aubor
    Ho scritto di nuovo il programma. Compila ma dà errori in esecuzione. Potete aiutarmi??
    QUALI errori? Bisogna sempre specificarli, senza costringere le persone a copiare il codice, incollarlo, compilarlo ed eseguirlo.
    Ed è bene specificare anche in quali punti si verificano gli errori.
    E segui anche il consiglio di Alex'87: usa gli appositi tag CODE (vedi il regolamento per la sintassi) quando posti il codice.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2026 vBulletin Solutions, Inc. All rights reserved.