Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    72

    Problemino da inesperto..

    Salve ragazzi!

    Perchè quando tento di avviare questo programmino

    codice:
    public class Multiprog {
       public static void main (String[]args){
          int x = Integer.parseInt (args[0]);
          int y = Integer.parseInt (args[1]);
          int z = 0;
          while (y>0) {
             z=z+x;
             y=y-1;
          }
          System.out.println ("Il risultato del prodotto è" +z);
       }
    }
    mi esce un errore;

    codice:
     Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException... 0
          at Multiprog.main(Multiprog.java:3)

    E sopratttutto, un mio amico mia ha mandato il suo programmino, che a lui funziona magicamente e guardate un pò...mi da lo stesso errore.

    codice:
    class Fattoriale
     {
        public static void main(String[] args)
         {
    	int x = Integer.parseInt(args[0]);
    	int y = 1,z = 1;
    	while(y<=x)
    	 {
    	  z = z*y;
    	  y++;
    	 }
    	System.out.println("Il fattoriale di "+x+" e' "+z);  
         }
     }
    codice:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    	at Fattoriale.main(Fattoriale.java:5)
    Aiutatemi vi prego


  2. #2

    Re: Problemino da inesperto..

    [b]
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException... 0
    at Multiprog.main(Multiprog.java:3)
    java.lang.ArrayIndexOutOfBoundsException... 0

    Trad: stai accendendo all'indice 0 dell'array args. Il valore in posizione 0 è null, non c'è niente insomma!

    Sono certo che da linea di comando non immetti il giusto numero di parametri.
    Se vuoi accedere ad args[0] devi inseire almeno un parametro da linea di comando.
    Se vuoi accedere ad args[1] devi inserirne due

    Tra l'altro è opportuno mettere:

    if ( args.length > 0 )
    /* Fai il fattoriale */
    else
    System.out.println("Inserisci i parametri");

  3. #3
    Non ti funziona perchè l'array args che tu passi come argomento al metodo main è vuoto. Per funzionarti dovresti scrivere qualcosa tipo:

    Codice PHP:
    java Fattoriale 3 
    in questo modo l'array args in posizione 0 ha il valore "3". Effettuando il parsing della stringa ottieni un intero e ne puoi calcolare il fattoriale.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Aggiungo che:

    1) Il titolo va scritto secondo le norme indicate dal regolamento: non troppo generico, né inconcludente (deve sempre rappresentare il contenuto della discussione)

    2) Il codice va postato utilizzando gli appositi tag [code] e [/code] (come indicato sempre nel regolamento) in modo da mantenerne l'indentazione e la formattazione.


    Correggo io dove possibile.


    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    72
    Inserendo

    codice:
    java Fattoriale 3
    mi spunta

    codice:
    class, interface, or enum expected
    Java Fattoriale 3
    L'ho forse inserito nella parte sbagliata della struttura del programma?

    Spero di riuscire a risolvere il problema...non so perchè al mio amico il programmino funziona senza problemi

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da visind
    Inserendo

    codice:
    java Fattoriale 3
    mi spunta

    codice:
    class, interface, or enum expected
    Java Fattoriale 3
    L'ho forse inserito nella parte sbagliata della struttura del programma?

    Spero di riuscire a risolvere il problema...non so perchè al mio amico il programmino funziona senza problemi
    Quello lo devi digitare nella linea di comando per avviare l'applicazione!

    Consiglio una lettura radicale di un qualsiasi manuale di Java che parta dalle fondamenta...

    Non per infierire: ma almeno sapere la differenza fra "programmare" ed "eseguire un programma"...


    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    72
    Avete presente Scintilla text?

    Li dove dovrebbe stare la linea di comando?

    Infatti...ho cominciato da una decinda di giorni con il java...sto seguendo dei corsi ed ecco qui....

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da visind
    Avete presente Scintilla text?

    Li dove dovrebbe stare la linea di comando?

    Infatti...ho cominciato da una decinda di giorni con il java...sto seguendo dei corsi ed ecco qui....
    Scintilla text è un editor (da quello che ricordo, anche tra i più scadenti) e non ha una riga di comando (o almeno non ne ricordo una).

    La riga di comando è il tuo Prompt di MS-DOS, o la Shell se lavori sotto Linux... dai quali si utilizzando i comandi javac per compilare i programmi e java per eseguire i programmi.

    Mi piacerebbe sapere quali sono i corsi che non spiegano come si fa a compilare ed eseguire i programmi... così, giusto per fare una telefonatina alle categorie dei consumatori...

    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    72
    Ho risolto con il fattoriale!

    Però adesso quello che mi chiedo è...

    Con un solo vettore faccio...

    Nomeclasse pametro --> (Fattoriale 4)

    Ma se invece il mio programma volesse 2 numeri in input...quindi con 2 vettori come devo scrivere sulla linea di comando? :master:

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Capirai anche tu che stiamo andando troppo sull OffTopic, vero? Tutto questo non ha nulla a che vedere con l'eccezione ArrayIndexOutOfBoundsException...
    Rimane valido il mio consiglio: seguire il corso, leggere manuali / guide, ecc... il forum non va usato come una "chat" dove si pone una domanda e si ha una risopsta, poi si cambia domanda e si ha una seconda risposta... né lo si usa per "imparare a programmare": questo compito viene svolto dai corsi e dai manuali.

    Il forum si usa per "dibattere" su un particolare problema di programmazione, su un particolare algoritmo o su una particolare strategia di sviluppo.


    Ad ogni modo: per passare 2 valori sulla riga di comando, si elencano 2 valori (separati da uno spazio) sulla riga di comando:

    codice:
    java NomeProgramma <elenco_parametri>
    
    Esempi:
    
    java NomeProgramma parametro1
    java NomeProgramma parametro1 parametro2
    java NomeProgramma parametro1 parametro2 parametro3
    java NomeProgramma parametro1 parametro2 parametro3 parametro4
    ...
    E' una cosa abbastanza banale...


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