PDA

Visualizza la versione completa : [Java] String args[]


JunkyFunki
14-01-2004, 10:53
Studio da poco java e in ogni prg che finora ho incontrato c'è sempre questa riga :

--> public static void main( String args[] ) <--


a cosa serve "String args[]"?

Maveric
14-01-2004, 11:37
per ricevere stringhe dalla barra dei comandi dell'ms-dos

es quando mandi in esecuzione il prog dal prompt:

java NomeClasse string0
string0 sara contenuto in args[0] puoi mettere anche piu stringhe
;)

JunkyFunki
14-01-2004, 12:09
Originariamente inviato da Maveric
per ricevere stringhe dalla barra dei comandi dell'ms-dos

es quando mandi in esecuzione il prog dal prompt:

java NomeClasse string0
string0 sara contenuto in args[0] puoi mettere anche piu stringhe
;)

non ho capito...in pratica avverte che nel prg saranno presenti stringhe anche se alla fine ci sono solo variabili int?

inoltre...al posto di string args[] posso scrivere altre cose?

Popper
14-01-2004, 12:40
no.... :dhò: vediamo se è + chiaro così
il metodo
public static main
è l'entry point del tuo programma java. deve essere dichiarato obbligatoriamente con un parametro di tipo array di stringhe. Esempio



public static main(String[] parametri)


come vedi dall'esempio il nome di tale array nn deve essere necessariamente args.
Questa variabile contiene tutti i parametri che tu passi a riga di comando quando richiami il programma. Esempio se tu scrivi la classe



public class Prova{
public static main(String[] parametri){
System.out.println(parametri[0]);
}
}

e poi esegui tale classe a riga di comando così'


java Prova ciaoooooo


il tuo programma farà un semplice display della stringa "ciaoooooo". Se però richiami il tutto senza argomenti


java Prova

ti verrà restituito un'errore runtime, in quanto nel metodo main si cercherà di accedere all'elemento di indice 0 di un array vuoto.

JunkyFunki
14-01-2004, 12:50
Originariamente inviato da Popper
no.... :dhò: vediamo se è + chiaro così
il metodo
public static main
è l'entry point del tuo programma java. deve essere dichiarato obbligatoriamente con un parametro di tipo array di stringhe. Esempio



public static main(String[] parametri)


come vedi dall'esempio il nome di tale array nn deve essere necessariamente args.
Questa variabile contiene tutti i parametri che tu passi a riga di comando quando richiami il programma. Esempio se tu scrivi la classe



public class Prova{
public static main(String[] parametri){
System.out.println(parametri[0]);
}
}

e poi esegui tale classe a riga di comando così'


java Prova ciaoooooo


il tuo programma farà un semplice display della stringa "ciaoooooo". Se però richiami il tutto senza argomenti


java Prova

ti verrà restituito un'errore runtime, in quanto nel metodo main si cercherà di accedere all'elemento di indice 0 di un array vuoto.

aspè..forse ho capito!

In pratica con args[] diciamo che il programma chiederà stringhe all'utente invece di passarle direttamente ,senza chiedere all'utente, quando richiami il programma con java? :master:

LeleFT
14-01-2004, 13:58
No... il parametro (che è un array di stringhe) serve a contenere EVENTUALI parametri passati al programma. Tu puoi passarne o meno, ma se li passi, questi verranno memorizzati in questo array. Se non ne passi, questo array sarà vuoto.

Il fatto che sia obbligatorio metterlo questo parametro (anche se il tuo programma non ne fa uso) è perchè così è specificato nel prototipo del main.


Ciao.

Popper
14-01-2004, 14:03
esempio stupido: supponiamo che notepad.exe sia scritto in java; a riga di comando puoi richiamare

notepad
o
notepad nomefile

nel primo caso l'array dei parametri sarà vuoto, nel secondo conterrà una stringa con il nome del file.
Spero di non averti fatto ancora + casino :)

JunkyFunki
14-01-2004, 14:14
ok..fin qui mi sembra tutto chiaro!

un ultima cosa...ci sono alternative a String args[] ?

ad esempio int args[] esiste?o float []?o ect...ect..

LeleFT
14-01-2004, 14:19
No: non ci sono alternative. Il prototipo del main vuole un array di stringhe.

Tu, al programma, puoi passare qualsiasi cosa (stringhe, numeri, caratteri), per avere il corrispondente tipo ti basta un casting attraverso le varie classi wrapper.

Per esempio, se come primo parametro hai passato un intero (e sai che è un intero) puoi usare questa istruzione per avere l'intero nella variabile 'numero':

numero = Integer.parseInt(args[0]);


Ciao.

JunkyFunki
14-01-2004, 14:34
Originariamente inviato da LeleFT
No: non ci sono alternative. Il prototipo del main vuole un array di stringhe.

Tu, al programma, puoi passare qualsiasi cosa (stringhe, numeri, caratteri), per avere il corrispondente tipo ti basta un casting attraverso le varie classi wrapper.

Per esempio, se come primo parametro hai passato un intero (e sai che è un intero) puoi usare questa istruzione per avere l'intero nella variabile 'numero':

numero = Integer.parseInt(args[0]);


Ciao.


ok , grazie per la spiegazione!

Loading