2013-08-26 14 views
5

ich habe verwirrt, wie args.length zu verwenden, ich habe hier etwas codiert:args.length und Befehlszeilenargumente

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]); 
    } 
} 

Der Ausdruck 0 keine Materie ist, welchen Wert ich in Kommandozeilenargumente setzen, ich denke ich habe wohl args.length mit den args [0] verwechselt, könnte das jemand erklären? Vielen Dank.

+1

Sie Argumente falsch geben werden kann. Können Sie uns zeigen, wie Sie die Argumente übergeben? – Cruncher

Antwort

19

int Array auf Null initialisiert wird standardmäßig (alle Mitglieder werden Null sein), siehe 4.12.5. Initial Values of Variables:

jede Klasse variabel, Instanzvariablen oder Arraykomponenten mit einem Standardwert initialisiert wird, wenn es geschaffen ...

Für den Typ int ist der Standardwert 0, dh 0.

Sie drucken den Wert des Arrays, daher erhalten Sie 0.

Haben Sie das versucht?

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

args enthält die Befehlszeile Argumente, die an das Programm übergeben werden.
args.length ist die Länge der Argumente. Wenn Sie zum Beispiel laufen:

java myJavaProgram first second 

args.length 2 sein wird, und es wird ["first", "second"] enthalten.

+0

Hallo Maroun, danke für deine Hilfe! –

+0

also was bedeuten die args in "args.length"? ist es nur ein zufälliger Name eines Arrays oder Argumente für die Länge? –

+0

Siehe meine Bearbeitung .... – Maroun

1

args[0] ist das erste Element des Arrays args. args.length ist die Länge des Arrays

2

Ich glaube, Sie einen Code sind vermisst, die Saiten zu Ints konvertiert:

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

Was ist, wenn * arg [n] * keine Nummer ist? Kannst du es versuchen? – Fernando

+0

@Fernando ja - es wird eine 'NumberFormatException' (eine' RuntimeException') ausgelöst, wenn die Zeichenfolge keine analysierbare Ganzzahl enthält – Bohemian

1

Die a Array Sie iterieren, ist nicht die args, dass die tatsächlichen Argumente enthält. Sie sollten versuchen:

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

Also was bedeuten die Argumente in "args.length"? ist es nur ein zufälliger Name eines Arrays oder Argumente für die Länge? –

+0

Dies ist der Name für den Hauptmethodenparameter. – Guillaume

0

die Argumente, die Sie übergeben werden in Args-Array gespeichert und nicht Ihre so genannte Array a. Standardmäßig nimmt ein korrekt deklariertes Array, wenn es nicht initialisiert wird, die Standardwerte seiner Datentypen an. in Ihrem Fall 0.

so tun Sie

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

oder das Array a mit den args initialisieren.

0

args.Länge ist = 0;

wenn Sie suchen, für diese Ausgabe:

args [0]: Null
args [1]: ein
args [2]: zwei
args [3]: drei

hier ist das Beispiel ...

public static void main (String [] args) {

// Array mit dem Array-Namen "arg" String [] arg = {"null", "eins", "zwei", "drei"};

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

Sie haben eine Länge auf das Array geben ..

+2

Ich glaube nicht, dass dies die Frage beantwortet, aber ich bin mir auch nicht sicher, ob ich verstehe, was Sie vorschlagen, könnten Sie das klären? Formatieren Sie auch den gesamten Code als Code. – blm