Errore Java Exception in thread...

di il
14 risposte

Errore Java Exception in thread...

Salve, ho creato questo codice

import prog.io.ConsoleOutputManager;

public class NomeEstensione {
public static void main(String[] args) {
ConsoleOutputManager out = new ConsoleOutputManager();

String s = args[0];
int punto = s.indexOf(".");

String nome = s.substring(0, punto);
String estensione = s.substring(punto+1, s.length());

out.println("nome: " + nome);
out.println("estensione: " + estensione);

}
}

Ma mi da questo errore..Ho letto che avviene perchè il codice tenta di raggiungere un indice di matrice in cui l'indice è maggiore della lunghezza della matrice. Ma non riesco a risolvere

14 Risposte

  • Re: Errore Java Exception in thread...

    Padova ha scritto:


    Ma mi da questo errore..
    Quale errore.

    Padova ha scritto:


    Ho letto che avviene perchè il codice tenta di raggiungere un indice di matrice in cui l'indice è maggiore della lunghezza della matrice. Ma non riesco a risolvere
    Beh, indexOf restituisce -1 se NON trova quel ".". E un substring(0, -1) è un errore (StringIndexOutOfBoundsException).
    Ma vuol dire che devi testare tu il valore di punto. Se diverso da -1, ok. Se -1 ... non so cosa vuoi fare, stampi errore, termini ..


    P.S. cerca di mettere titoli significativi, non "Help".
  • Re: Errore Java Exception in thread...

    Hai ragione, scusami, mi da questo errore:

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
  • Re: Errore Java Exception in thread...

    Padova ha scritto:


    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    Allora il problema è ancora prima del indexOf. Quando avvii il tuo programmino devi passare in argomento un parametro che sarà preso con quel args[0] .

    Dipende come avvii il programmino: "a mano" da un prompt dei comandi? Da un IDE?
  • Re: Errore Java Exception in thread...

    Prompt con comando javac
  • Re: Errore Java Exception in thread...

    Padova ha scritto:


    Prompt con comando javac
    Compilazione

    javac NomeEstensione.java

    Avvio

    java NomeEstensione argomento
  • Re: Errore Java Exception in thread...

    Sei gentile e non vorrei rompere...Ma mi da sempre errore
  • Re: Errore Java Exception in thread...

    Padova ha scritto:


    Sei gentile e non vorrei rompere...Ma mi da sempre errore
    Sì, scusa, prima ho risposto velocemente da smartphone e non ci ho pensato molto. Nel codice hai usato quella ConsoleOutputManager, che NON fa parte del framework standard. Quindi devi avere da qualche parte o un file .jar che contiene quella classe (più altro eventuale, non so) oppure i file .class "sfusi" sul file-system.

    Precisa questo, cioè cosa hai ricevuto/scaricato di quella mini-libreria del package prog.io . Perché le due esecuzioni con javac/java possono avere una opzione in più per specificare il "classpath". O in alternativa puoi settare la variabile di ambiente del sistema chiamata CLASSPATH.
  • Re: Errore Java Exception in thread...

    Allora, ho scarico il pacchetto prog-4ed.jar. Poi ho creato due cartelle in c, una javalib ed una jarlib. In jarlib ho inserito il jar così com'è, in javalib invece ho inserito il pacchetto jar l'ho estratto e lasciato dentro le cartelle con i file. Poi in variabili nel path ho messo

    CLASSPATH=.;C:\javalib;C:\jarlib\prog-4ed.jar
  • Re: Errore Java Exception in thread...

    Padova ha scritto:


    in javalib invece ho inserito il pacchetto jar l'ho estratto e lasciato dentro le cartelle con i file.
    Se hai scompattato il jar, nulla di grave ma .. non serve.

    Padova ha scritto:


    CLASSPATH=.;C:\javalib;C:\jarlib\prog-4ed.jar
    Visto così comunque è corretto. Quindi basta stare come directory "corrente" (grazie al ".") nella directory dove hai NomeEstensione.java e dare i 2 comandi che ho detto prima.
  • Re: Errore Java Exception in thread...

    Allora, io creo quindi la cartella dove metto il file.java in c, poi apro il command ed arrivo nella cartella dei file che si chiama prova 2, poi javac NomeEstensione.java

    java NomeEstensione argomento

    giusto?
  • Re: Errore Java Exception in thread...

    Padova ha scritto:


    Allora, io creo quindi la cartella dove metto il file.java in c, poi apro il command ed arrivo nella cartella dei file che si chiama prova 2, poi javac NomeEstensione.java

    java NomeEstensione argomento

    giusto?
    Sì, avendo "." (=directory "corrente") in classpath, metti NomeEstensione.java dove vuoi e stando da prompt in quella cartella dai i 2 comandi.
  • Re: Errore Java Exception in thread...

    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1967)
    at NomeEstensione.main(NomeEstensione.java:10)
  • Re: Errore Java Exception in thread...

    Padova ha scritto:


    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    Scusa ma l'ho detto prima: il codice si aspetta 1 argomento che contiene un punto ".". Se non metti un punto, indexOf restituisce -1 e passare -1 a substring è quel errore.

    Nel codice si parla di "nome" e "estensione", quindi si immagina un nome di file es.: pippo.txt
  • Re: Errore Java Exception in thread...

    Perfetto, ora mettendo java NomeEstensione argomento.argomento poi mi da Nome: argomento estensione: argomento. Qualsiasi cosa scrivo poi me lo fa vedere. Il problema era quindi che non davo nulla a video. Davvero grazie, grazie e grazie!
Devi accedere o registrarti per scrivere nel forum
14 risposte