IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[debutant] [main] plusieurs arguments


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [debutant] [main] plusieurs arguments
    Bonjour Ô développeurs Java,

    Bon comme dis dans le sujet, je suis un gros newbie...

    Je développe actuellement un programme qui va ouvrir un document openOffice, remplacer des mots par d'autres, et l'enregistrer sous un autre nom.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public static void main(String args[]) {
    args[0] = nom du document à ouvrir
    args[1] = nom sous lequel sauvegarder le nouveau document

    Les mots à remplacer étant déclarés en dur dans un tableau, et les mots "remplaçants" aussi, dans un autre. Comme ça pas de problème, ça marche niquel.

    Le truc c'est que suivant le fichier à ouvir, les mots à remplacer sont différents, et bien sur, idem pour les remplaçant (qui seront spécifiés par les utilisateurs..)

    Alors, je voudrais tout passer en argument, du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public static void main(String args[], String[motsARemplacer], String motsRemplacants[]) {
    Mais ça, mon compilo n'aime pas du tout

    Il me sort
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.lang.NoSuchMethodError: main
    Exception in thread "main"
    toute aide sera très appréciée ..

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 69
    Points : 58
    Points
    58
    Par défaut
    pour récupérer les arguments tu dois utiliser le tableau de String args[]

    pour n arguments :

    args[1] -> premier argument
    args[2]
    ...

    jusqu'à

    args[n-1]

    pour savoir le nbre d'arguements (donc la taille du tableau) tu fais args.length()

  3. #3
    Membre habitué Avatar de XristofGreek
    Inscrit en
    Août 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 164
    Points : 174
    Points
    174
    Par défaut
    normal que ça ne compile pas puisque tu ne peux ecrire que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void main(String args[]) {}
    pour le main().
    Je te conseille donc de faire autrement c'est un problème de conception que tu as. Par exemple tu devrais tester le nom du fichier ou les données que tu possèdes à l'intérieur de ton fichier pour faire ton traitement conditionnel dans le main() bien sûr.

    Je ne suis pas sur d'avoir été clair....
    les gens qui s'ennuient sont des gens sans imagination.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    oauis je me disais bien que ce n'était pas possible .... bon bein je v tester autrement..

    je posterai ma solution kan jaurais trouvé..

    entre temps si quelquun a une idée, ça mévitera de marracher les cheveux.

    merci @toi XristofGreek

  5. #5
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par gl0be
    args[1] -> premier argument
    NON ! args[1] c'est le 2ème, le 1er c'est args[0]...

    Citation Envoyé par naive dude
    entre temps si quelquun a une idée, ça mévitera de marracher les cheveux
    bin la solution, c'est quand tu lance le programme java en ligne de commande: tu dois faire java MaClasse. Et bien là, tu rajoute les arguments à la suite....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java LaClasse unfichier.txt unautre.txt
    et dans le main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public static void main (String[] args){
     
      String fileIn = args[0];
      String fileOut = args[1];
     
    }
    bien sûr, faut encadrer ça dans des conditions pour pas que ça plante si les arguments n'existent pas...

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    oups désolé gl0be, je n'avais pas vu ta réponse..

    j'ai une idée, mais je ne sais pas comment la mettre en place..

    en fait le nombre d'arguments va etre aléatoire

    alors je voulais mettre un truc du style

    args[0]=nom fichier
    args[1]=nom sauvegarde
    args[3]=nombre de mots à remplacer (vu quils vont etre identique avec les mots remplaçants)
    args[4]=mot
    ....
    args[x]=mot de remplacement
    etc...

    mais aie je me casse la tete ...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 63
    Points : 68
    Points
    68
    Par défaut
    Salut,
    Je n'ai pas testé, mais puisque le main prend en paramètres un tableau, rien ne t'empêche de lui passer autant de paramètres que tu le souhaites et de traiter dynamiquement ton tableau de paramètres dans ton main :
    Avec args[0] et args1[1] tu as tes paramètres "fixes"
    Ensuite tu récupères ton nombre de mots (d'ailleurs ce paramètres ne doit pas être indispensable : le nombre de mots est donné par la formule (args.length-2)/2)
    Et ensuite tu boucles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (int i = 3 ; i < args.length ; i = i+2) {
      String motARemplacer = args[i];
      String motDeRemplacement = args[i+1];
      //traitement de tes mots...
    }

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    C cool :o maintenant comment faire pour affecter ces variable dans des tableaux de string et non dans des variables ? j'ai bau testé, il me sort que des erreurs ...

  9. #9
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par naive dude
    comment faire pour affecter ces variable dans des tableaux de string et non dans des variables ?
    bin... même principe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String[] tab = new String[args.length];
     
    tab[0] = args[0];
    tab[1] = args[1];
    ...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    lol je venais de trouver :p je testais juste style tab[] = test[i] et je ne comprenais pas pouquoi ça ne marchais pas

    merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant] enchainer plusieurs blocs <html><body>
    Par debdev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/07/2005, 11h47
  2. [debutant][log4j] plusieurs appender
    Par Invité dans le forum Logging
    Réponses: 1
    Dernier message: 13/07/2005, 10h36
  3. Réponses: 8
    Dernier message: 30/05/2005, 13h55
  4. [DEBUTANT]Lancer plusieurs processus
    Par demontools dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/04/2005, 13h48
  5. [debutant]Modelistation > plusieurs fk d'une meme table
    Par christophebmx dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 15/11/2004, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo