web-dev-qa-db-fra.com

args.length et arguments de ligne de commande

J'ai été confondu avec l'utilisation de args.length, j'ai codé quelque chose ici:

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

L'impression est 0 quelle que soit la valeur que je mets dans les arguments de ligne de commande, je pense avoir probablement confondu args.length avec les arguments args [0], quelqu'un pourrait-il expliquer? Je vous remercie.

5
Wang Pei The Dancer

int tableau est initialisé à zéro (tous les membres seront zéro) par défaut, voir 4.12.5. Valeurs initiales des variables :

Chaque variable de classe, variable d'instance ou composant de tableau est initialisé avec une valeur par défaut lors de sa création ...

Pour le type int, la valeur par défaut est zéro .

Vous imprimez la valeur du tableau, vous obtenez donc 0.

Avez-vous essayé de faire cela?

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

args contient les arguments ligne de commande qui sont transmis au programme. 
args.length est la longueur des arguments. Par exemple si vous exécutez: 

Java myJavaProgram first second

args.length sera 2 et il contiendra ["first", "second"].

Et la longueur des arguments du tableau est automatiquement définie sur 2 (nombre de vos paramètres), il n’est donc pas nécessaire de définir la longueur des arguments.

19
Maroun

Je pense qu'il vous manque un code qui convertit Strings en ints:

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

Le tableau a sur lequel vous parcourez n'est pas le args qui contient les arguments réels. Tu devrais essayer:

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

args[0] est le premier élément du tableau args. args.length est la longueur du tableau

1
Prasad Kharkar

args.length est = 0;

si vous recherchez cette sortie:

args [0]: zéro 
args [1]: un 
args [2]: deux
args [3]: trois

voici l'exemple ... 

public static void main (String [] args) {

// tableau avec le nom de tableau "arg" String [] arg = {"zéro", "un", "deux", "trois"};

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

vous devez donner une longueur au tableau ..

0
Renz Mallari

les arguments que vous passez sont stockés dans un tableau args et non ce que vous appelez le tableau a. . Par défaut, un tableau correctement déclaré, s'il n'est pas initialisé, prend les valeurs par défaut de ses types de données. dans votre cas 0.

alors tu fais 

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

ou initialisez le tableau a avec les arguments.

0
akhil