webentwicklung-frage-antwort-db.com.de

args.length und Befehlszeilenargumente

Ich wurde mit der Verwendung von args.length verwechselt. Ich habe hier etwas codiert:

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 ist 0, egal welchen Wert ich in Befehlszeilenargumente einsetze, ich glaube, ich habe args.length wahrscheinlich mit den Argumenten [0] verwechselt. Könnte jemand erklären? Vielen Dank.

5

Das int-Array ist standardmäßig auf Null gesetzt (alle Mitglieder sind Null), siehe 4.12.5. Anfangswerte von Variablen :

Jede Klassenvariable, Instanzvariable oder Array-Komponente wird bei ihrer Erstellung mit einem Standardwert initialisiert ...

Für den Typ int ist der Standardwert null .

Sie drucken den Wert des Arrays und erhalten 0.

Hast du 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. Zum Beispiel, wenn Sie ausführen: 

Java myJavaProgram first second

args.length wird 2 und enthält ["first", "second"].

Die Länge der Array-Argumente wird automatisch auf 2 gesetzt (Anzahl Ihrer Parameter), so dass die Länge der Argumente nicht festgelegt werden muss.

19
Maroun

Ich denke, Ihnen fehlt ein Code, der Strings in 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]);
    }
}
2
Bohemian

Das a-Array, mit dem Sie iterieren, ist nicht die args, die die tatsächlichen Argumente enthält. Du solltest es versuchen:

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

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

1
Prasad Kharkar

args.length ist = 0;

wenn Sie nach dieser Ausgabe suchen:

args [0]: null 
args [1]: Eins 
args [2]: zwei
args [3]: drei

hier ist das Beispiel ... 

public static void main (String [] args) {

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

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

sie müssen dem Array eine Länge geben.

0
Renz Mallari

die Argumente, die Sie übergeben, werden in args array gespeichert und nicht in Ihrem so genannten Array a. . Standardmäßig verwendet ein ordnungsgemäß deklariertes Array, wenn es nicht initialisiert ist, die Standardwerte seiner Datentypen. in deinem Fall 0.

also tust du es 

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

oder initialisieren Sie das Array a mit den Argumenten.

0
akhil