J'écris un programme, qui prend deux mots comme arguments de ligne de commande, fait quelque chose pour eux, et imprime le résultat. J'écris une classe pour gérer cela, et ma question est: quelle est la meilleure façon de passer deux mots donnés comme arguments de ligne de commande entre les méthodes d'une classe? Pourquoi ne puis-je pas utiliser l'habituel "this.variable =" dans le constructeur avec "args"?Java passant des arguments de ligne de commande à des méthodes
3
A
Répondre
7
Vous pouvez, si vous passez args
au constructeur:
public class Program
{
private String foo;
private String bar;
public static void main(String[] args)
{
Program program = new Program(args);
program.run();
}
private Program(String[] args)
{
this.foo = args[0];
this.bar = args[1];
// etc
}
private void run()
{
// whatever
}
}
1
Si vous attendez des arguments à transmettre sur la ligne de commande, vous pouvez faire des choses un peu plus robuste et vérifier qu'ils sont bien passés . Ensuite, transmettez le tableau args
ou ses valeurs à un constructeur. Quelque chose comme ceci:
public class App {
private final String arg0;
private final String arg1;
public static void main(String[] args) {
if (args.length < 2) {
System.out.println("arguments must be supplied");
System.out.println("Usage: java App <arg0> <arg1>");
System.exit(1);
}
// optionally, check that there are exactly 2 arguments
if (args.length > 2) {
System.out.println("too many arguments");
System.out.println("Usage: java App <arg0> <arg1>");
System.exit(1);
}
new App(args[0], args[1]).echo();
}
public App(String arg0, String arg1) {
this.arg0 = arg0;
this.arg1 = arg1;
}
public void echo() {
System.out.println(arg0);
System.out.println(arg1);
}
}
+0
+1 pour informer l'utilisateur de l'utilisation des arguments de la ligne de commande. Je n'ai pas vu beaucoup de programmeurs faire cela. Même si ce post est vieux mais j'ai aimé la façon dont vous traitez avec CLA. J'ai appris quelque chose de toi. :) – Saad
Merci! Je suis un débutant avec des arguments en ligne de commande. – rize
c'était trop mignon :) +1 pour cela –
Je reçois 'la méthode run() est indéfinie pour le type Program'. Cela pourrait-il être différent dans différentes versions de Java? J'utilise Java 5. – rize