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

avec Java Discussion :

Arguments du main


Sujet :

avec Java

  1. #1
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut Arguments du main
    Bonjour,

    J'ai deux classes java que j'execute en fonction du type du fichier d'entrée. Dans mon main, je crée une instance de ces deux classes et via une méthode execute(), j’apelle telle ou telle classe en mettant en commentaire celle qui ne m'intéresse pas (donc pas très joli)
    Je souhaiterai pouvoir mettre 0 ou 1 en argument du main. Lorsque mon fichier d'entrée est de type CSV, je met 0 en argument et j'appelle la bonne classe: qqch du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (args==0 )
    {GeneratorCsv executer = new GeneratorCsv();
    executer.execute(configProperties);}
    Pensez-vous que cela est possible. Si oui comment?

    Voici mon main actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public static void main(final String[] args) {
    		try {
    			Properties configProperties = readConfiguration();
     
    			/**Traitement pour autre**/
    			//GeneratorAutre executer = new GeneratorAutre();
     
    			/**Traitement pour CSV**/
    			GeneratorCsv executer = new GeneratorCsv();
     
    			executer.execute(configProperties);
    		} catch (Throwable e) {
     
    			LOG.error(e);
     
    		}
    	}
    Merci pour vos suggestions.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    en lisant le tableau d'arguments args et en utilisant un bon vieux "switch" par exemple.

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Par défaut
    Lire la FAQ, et un bon cours de Java!

    http://java.developpez.com/faq/java/...sLigneCommande

  4. #4
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut
    Merci, je vais jeter un coup et faire quelques tests.

  5. #5
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut
    Merci pour vos réponses mais cela ne m'a pas tellement aidé.
    Je ne peux pas mettre de switch car il me faudrait passer mon type args en int par exemple alors qu'actuellement il est de type String[] (sinon j'ai une erreur fatale et un exit programm). Puisque je n'ai que 2 cas, je peux donc passer par un if, else. Mais par la suite, faut-il faire qqch dans mon shell ou mon .bat ?

    Pour la faq, cela ne répond pas à ma question.

    D'autres suggestions svp??

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    methode parseInt(str) pour transformer un String en entier.

  7. #7
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut
    Oui mais j'ai un tableau de String en paramètre de mon main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void main(String[] args)
    Mais à la limite je pourrais trouver une solution à ça, pour l'instant ce qui me coince le plus c'est où dois-je spécifier la valeur de mon paramètre?

    Voici mon main avec la méthode switch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public static void main(String[] args) {
    		try {
    			Properties configProperties = readConfiguration();
     
    			//test traitement pour CSV >>> Si OK ajouter une vérif sur le nb d'arguments donné <<<
    			int arg[]=;
    			for(int i=0; i<3;i++){
    			   arg[i]=Integer.parseInt(args[i]); 
    			}
     
    			switch (args){
    			case 1:
        			{PdfGeneratorCsv executer = new PdfGeneratorCsv(); 
                    executer.execute(configProperties);}
    			case 0:
    			    { PdfGeneratorArcade executer = new PdfGeneratorArcade(); 
                    executer.execute(configProperties);}
    			default:
    			    LOG.info("Aucun fichier en entrée");
    			}
     
     
     
    		} 
    	}
    Est-ce que cela doit se faire dans le shell ?

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    java MonProgramme argument

    alors, dans le tableau de String args, args[0] contient "argument"



    Citation Envoyé par Morji2810 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    			  int  arg = Integer.parseInt(args[0]); 
     
     
    			switch (arg){
    			case 1:
        			PdfGeneratorCsv executer = new PdfGeneratorCsv(); 
                    executer.execute(configProperties);
    			break;
    			case 0:
    			    PdfGeneratorArcade executer = new PdfGeneratorArcade(); 
                    executer.execute(configProperties);
    			break;
    			default:
    			    LOG.info("Aucun fichier en entrée");
    			}	
     
    		} 
    	}

    tu devrais prendre une journée pour lire un cours de java sur le net ou un bouquin. Tu apprendrais rapidement les bases du langage

  9. #9
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Par défaut
    Citation Envoyé par Morji2810 Voir le message
    Pour la faq, cela ne répond pas à ma question.

    D'autres suggestions svp??
    En fait si, si tu comprends bien ce qui y est dit. Et que tu maitrises les bases du langages.

    Mais il me semble que cela n'est pas ton cas. D’où mon conseil, relayé par d'autres, de prendre le temps de lire un bon cours de Java, qui part du début. Tu vas peut être perdre un jour ou deux au départ, mais tu vas en gagner bien plus par la suite!

    Pour répondre plus précisément à ta question tout de même.

    Lorsque tu exécute un programme java, la syntaxe d'appel est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java TaClasseAvecMain arg1 arg2 arg3
    (en plus, tu peux évidement avoir des classpath ou d'autres arguments).

    Si tu utilise un IDE (genre Eclipse et Netbeans, ou autre) cet appel peut être transparent pour toi quand tu fais click-droit > Run as > Java Application ou l'équivalent. Mais sache que l'appel est bel et bien là et que tu peux paramétrer le lancement de ton programme par ton IDE pour y mettre tes arguments. Je te laisse chercher comment, le net grouille d'explications à ce sujet.

    Maintenant que tu sais comment est appelé ton programme, tu peux donc lui mettre les arguments qui te conviennent.

    Et donc les récupérer dans ton main comme l'a fait plawyx.

    Attention tout de même, son code ne vérifie pas le nombre d'arguments, donc cela peut provoquer des exceptions si tu n'as pas de paramètres.

  10. #10
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut
    Effectivement j'apprends vraiment sur le tas en fonction de mes besoins.
    Merci pour vos conseils, je vais regarder ça en espérant que je puisse avancer rapidement.

  11. #11
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut
    Je reviens mettre un beau RESOLU sur la discussion.

    Merci pour vos réponses, j'ai suivi vos conseils et je suis arrivée à ce que je souhaitais.

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

Discussions similaires

  1. Arguments avec Main
    Par smutmutant2003 dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2007, 11h46
  2. gestion propre des arguments du main
    Par jobherzt dans le forum C++
    Réponses: 1
    Dernier message: 30/08/2006, 18h17
  3. argument de main de type float
    Par booby dans le forum C
    Réponses: 3
    Dernier message: 14/04/2006, 14h34
  4. arguments de main
    Par BnY dans le forum C
    Réponses: 8
    Dernier message: 13/04/2006, 12h31
  5. Réponses: 9
    Dernier message: 29/07/2003, 14h41

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