2013-08-26 21 views
5

mi sono confuso con il modo di utilizzare args.length, ho codificato qualcosa qui:args.length e della riga di comando argomenti

public static void main(String[] args) { 
    int [] a = new int[args.length]; 

    for(int i = 0;i<args.length;i++) { 
     System.out.print(a[i]); 
    } 
} 

La stampa è 0, non importa quale valore ho messo in argomenti della riga di comando, io penso che probabilmente ho confuso args.length with the args [0], qualcuno potrebbe spiegare? Grazie.

+1

Ci si potrebbe passare gli argomenti sbagliato. Puoi mostrarci come passi gli args? – Cruncher

risposta

19

int array è inizializzato a zero (tutti i membri saranno zero) per default, vedere 4.12.5. Initial Values of Variables:

Ogni variabile di classe, variabile esempio, o un componente di matrice viene inizializzato con un valore predefinito quando si crea ...

Per tipo int, il valore predefinito è zero, ovvero 0.

Si sta stampando il valore dell'array, quindi si ottiene 0.

Hai provato a farlo?

for(int i = 0;i<args.length;i++) { 
    System.out.print(args[i]); 
} 

args contiene la riga di comando argomenti che vengono passati al programma.
args.length è la lunghezza degli argomenti. Per esempio se si esegue:

java myJavaProgram first second 

args.length sarà 2 e sarà contengono ["first", "second"].

+0

Ciao Maroun, grazie per il tuo aiuto! –

+0

quindi cosa significa "args.length"? è solo un nome casuale di un array o argomenti per la lunghezza? –

+0

Vedere la mia modifica .... – Maroun

1

args[0] è il primo elemento dell'array args. args.length è la lunghezza della matrice

2

penso che ti manca un codice che converte le stringhe in interi:

public static void main(String[] args) { 
    int [] a = new int[args.length]; 

    // Parse int[] from String[] 
    for (int i = 0; i < args.length; i++){ 
     a[i] = Interger.parseInt(args[i]); 
    } 

    for (int i = 0; i < args.length; i++){ 
     System.out.print(a[i]); 
    } 
} 
+0

cosa succede se * arg [n] * non è un numero? Puoi provare a prenderlo? – Fernando

+0

@Fernando yes - genererà un 'NumberFormatException' (a' RuntimeException') se la stringa non contiene un numero intero parsable – Bohemian

1

Il a gamma di eseguire iterazioni su non è il args che contiene gli argomenti effettivi. Dovresti provare:

public static void main(String[] args) { 
     for(int i = 0;i<args.length;i++){ 
      System.out.print(args[i]); 
     } 
} 
+0

quindi cosa significa "args.length"? è solo un nome casuale di un array o argomenti per la lunghezza? –

+0

È il nome per il parametro del metodo principale. – Guillaume

0

le discussioni che stai passando sono archiviate in array di argomenti e non il tuo cosiddetto array a. per impostazione predefinita un array dichiarato correttamente se non inizializzato prende i valori predefiniti dei suoi tipi di dati. nel tuo caso 0.

in modo da

public static void main(String[] args) { 
for(int i = 0;i<args.length;i++){ 
System.out.print(args[i]); 
} 
} 

o inizializzare l'array con un args.

0

args.la lunghezza è = 0;

se siete alla ricerca di questa uscita:

args [0]: zero
args [1]: uno
args [2]: due
args [3]: tre

qui è l'esempio ...

Main (string [] args) {public static void

// array con il nome della matrice "arg" String [] arg = {"zero", "uno", "due", "tre"};

 for(int i=0; i<arg.length ;++i) 
     { 
      System.out.println("args["+i+"]:"+arg[i]); 
     } 
    } 
    } 

si deve dare una lunghezza alla matrice ..

+2

Non penso che questo risponda alla domanda, ma non sono nemmeno sicuro di capire cosa stai suggerendo, potresti chiarire? Inoltre, formatta tutto il codice come codice. – blm

Problemi correlati