Java: lancement de programme avec "option"

Statut
N'est pas ouverte pour d'autres réponses.

Skarbone

Le méchant Ω
Salut tout le monde :)

Voila, je suis en train de bosser sur mon premier projet de java pour l'école, et j'ai un petit problème...

En fait, je dois creer un programme (avec diverses classes, mais soit) qui doit etre appelé avec un argument pour fonctionner.
Par exemple, pour faire l'action 1 je dois lancer

java monprogramme action1

pour chaque action, je rajoute un "mot clé" après le nom de mon programme en gros...
Seulement voila, je sais pas trop comment faire cela?

J'ai pensé a tout simplement faire une méthode "action1" dans mon programme, je n'ai pas encore eu l'occasion de tester.. est-ce comme cela que je dois faire?
Si oui, lorsque je lancerai java monprogramme action1, je ne devrai pas mettre de () après action1?

Merci d'avance ^^


ps: a oui, si jamais le mot clé que je met après monprogramme n'est pas un mot clé utilisé, mon programme doit automatiquement afficher une liste des mots clé connus... Jsais pas trop comment faire =D
try and catch?
 

Jereck

Α & Ω
Staff
ton programme démarre par une fonction main(), non ?

et quel est le prototype de cette fonction ?

void Main(string args[]);

tes arguments de ligne de commande se situent dans ce tableau de chaines "args".

là, un test sur args.length() pour savoir s'il y a eu un argument, et si oui, un bête switch (args[0]){ ... } pour savoir quelle action effectuer ...
 

Jereck

Α & Ω
Staff
et pour ton PS, utilise le case "default" du switch, et un Console.WriteLine()
 

tqz_

Elite
ton programme démarre par une fonction main(), non ?

et quel est le prototype de cette fonction ?

void Main(string args[]);

tes arguments de ligne de commande se situent dans ce tableau de chaines "args".

là, un test sur args.length() pour savoir s'il y a eu un argument, et si oui, un bête switch (args[0]){ ... } pour savoir quelle action effectuer ...
J'aurai pas dit mieux :)

Bonne chance pour ton projet
 
1er
OP
Skarbone

Skarbone

Le méchant Ω
ton programme démarre par une fonction main(), non ?

et quel est le prototype de cette fonction ?

void Main(string args[]);

tes arguments de ligne de commande se situent dans ce tableau de chaines "args".

là, un test sur args.length() pour savoir s'il y a eu un argument, et si oui, un bête switch (args[0]){ ... } pour savoir quelle action effectuer ...
Je dirais String[] args plutot :p

mais je comprend pas trop comment faire pour que le paramètre soit reconnu, etant donné que j'ai jamais rien mis dans ce tableau de string :/
 

CiDoUm

ringtwice.be
Rien dit :)
 

Jereck

Α & Ω
Staff
Je dirais String[] args plutot :p

mais je comprend pas trop comment faire pour que le paramètre soit reconnu, etant donné que j'ai jamais rien mis dans ce tableau de string :/
TU ne mets rien dedans, c'est un argument que la machine JAVA file à ton programme. et cet argument contient les arguments de la ligne de commande.

dans ce cas-ci, {"action1"}
 
1er
OP
Skarbone

Skarbone

Le méchant Ω
TU ne mets rien dedans, c'est un argument que la machine JAVA file à ton programme. et cet argument contient les arguments de la ligne de commande.

dans ce cas-ci, {"action1"}
Oki, donc je devrais faire un truc du genre

if (args[0] == "action1"){
....code de mon action1
....
}

c'est cela?
En sachant qu'on ne doit donner qu'un seul argument a chaque execution.. Ces arguments peuvent etre new, favorites, delete, add, list et ce genre de trucs..

Bon evidemment j'utiliserais un switch, et je pense que pour comparer deux string faut faire appel aux méthodes equals, mais dans l'idée, c'est cela?
 

Jereck

Α & Ω
Staff
oui

et n'oublie pas de vérifier avant qu'il y a bien qque chose dans args (qu'on a pas lancé ton pgm sans argument quoi)
 

null

ose();
if (args[0] == "action1"){
....code de mon action1
....
}
Et surtout n'oublie qu'en Java, on vérifie l'égalité d'une chaîne avec une autre via .equals() :

if (args[0].equals("action1")){
....code de mon action1
....
}
 

Ahava

Revenant
Encore un à l'ESI.. ils ont oublié le TD avec le tab d'arguments, on dirait..
 
1er
OP
Skarbone

Skarbone

Le méchant Ω
Et surtout n'oublie qu'en Java, on vérifie l'égalité d'une chaîne avec une autre via .equals() :

if (args[0].equals("action1")){
....code de mon action1
....
}
si tu relis mon message, je l'avais écrit =D
 

AcidBird

Elite
Pense quand même à vérifier la longeur de ton tableau d'argument, je sais pas qui donne java à l'ESI mais j'ai connu des profs assez tordus qui n'hésiteront pas à tester ton programme sans passer d'arguments, juste pour le fun ^^
 

Jereck

Α & Ω
Staff
non, ça marchera pas

si args est vide, args[0] lèvera une ArgumentOutOfRangeException (ou équivalent)

(j'avoue que je me base sur le comportement du C#, mais c'est toujours fort proche.)
 
1er
OP
Skarbone

Skarbone

Le méchant Ω
toujours est il que je n'ai pas besoin de tester la longueur du tableau, si mon programme execute l'un des modules, c'est qu'il y avait un paramètre correct, sinon, il affichera l'aide.

En tout cas merci a tous, avec ca je devrais me débrouiller ^^
 
1er
OP
Skarbone

Skarbone

Le méchant Ω
tu as essayé d'accéder à args[0] si le tableau est vide ?
non, mais args[0] ne contient aucun des paramètres reconnus, il affiche toujours la même chose, que l'on ai pas mis de paramètres ou bien qu'on ai mis un paramètre erroné :)

edit: oké j'ai compris ^^.
reglé ca avec une recherche de la taille du tableau, si elle est de 0, alors il affiche d'office l'aide
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut