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 :

opérateur et arguments !


Sujet :

avec Java

  1. #1
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut opérateur et arguments !
    Salut,
    Je parle couramment le perl mais pas encore parfaitement le java , donc je m'y remets et j'ai un petit souci de java que je ne comprends pas. Mon script prend en argument une valeur, un opérateur et une valeur puis fait le calcul, le voici :
    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
    26
    27
    28
    29
    30
    public class Calculatrice {
    	public static void main(String[] arguments) {
    		// testons les arguments
    		int NombreArguments = arguments.length;
    		if( NombreArguments < 3 ) {
    			    System.out.println ("Usage : Calculatrice <argument1> <opérateur> <argument1>");
    			    System.exit(1);
    		}
    		// Les arguments
    		double valeur1 = Double.parseDouble(arguments[0]);
    		String operateur = arguments[1];
    		double valeur2 = Double.parseDouble(arguments[2]);
    		double reponse = 0;
    		switch (operateur.charAt(0)) { 
    			case '+': reponse = valeur1 + valeur2; 	break;
    			case '-': reponse = valeur1 - valeur2; 	break;
    			case '*': reponse = valeur1 * valeur2; 	break;
    			case '/': 
    				if ( valeur2 == 0 ) {
    					System.out.println("La division par zéro est impossible : ");
    					System.exit(1);
    				}
    				else {
    					reponse = valeur1 / valeur2;
    				}
    				default: System.out.println("Mauvais opérateur : ");	break;
    		}
    		System.out.println(valeur1 + " " + operateur + " " + valeur2 + " = " + reponse);
    	}
    }
    Il fonctionne bien si je fais :
    Calculatrice 1 + 2
    Calculatrice 1 - 2
    Calculatrice 1 / 2
    Mais avec l'opérateur de multiplication, j'ai une erreur java :
    Exception in thread "main" java.lang.NumberFormatException: For input string: ".project"
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at java.lang.Double.parseDouble(Unknown Source)
    at Calculatrice.main(Calculatrice.java:13)
    Quelqu'un peut il m'expliquer ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu dois surement tourner sous un système Unix ou assimilé. Lorsque tu tapes ceci sous un shell :
    Le shell va automatiquement remplacer * par les noms de fichier correspondant.
    Par exemple si tu as 4 fichiers dans le répertoire courant, cela revient à appeler le programme de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calculatrice 1 fichier1 fichier2 fichier3 fichier4 2

    Il faut que tu protèges le meta-caractères * :

    a++

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    euh, je suis sous Windows XP et avec eclipse. Mais même sous DOS, c'est idem.
    Tu veux dire que Java modifie mon * ?

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Ok, je suis bête, tu as raison, * sous console dos ou linux signifie tous, je vais plutôt utiliser le caractère x à la place de *.

    Merci de ta remarque, je n'y avais pas pensé

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par djibril Voir le message
    euh, je suis sous Windows XP et avec eclipse. Mais même sous DOS, c'est idem.
    Tu veux dire que Java modifie mon * ?
    Avec Eclipse, c'est le même phénomène...
    Et ce n'est pas Java qui modifie le "*", c'est soit le système Linux soit le système DOS soit l'environnement Eclipse ! Exécute au début de ton main une petite boucle qui affiche le contenu de arguments, pour voir

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Citation Envoyé par Astartee Voir le message
    Avec Eclipse, c'est le même phénomène...
    Et ce n'est pas Java qui modifie le "*", c'est soit le système Linux soit le système DOS soit l'environnement Eclipse ! Exécute au début de ton main une petite boucle qui affiche le contenu de arguments, pour voir
    oui oui, je sais. Merci!
    J'avais un peu la tête en l'air et ne me suis pas rendu compte de l'énormité. Java n'est pas à incriminer.

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Oui c'est bien le shell système qui modifie cela et non pas Java. Tu rencontres le même phénomène avec tous les langages.

    Par contre je viens de voir que c'est la même chose sous Windows alors que j'étais persuadé que ce n'était pas le cas et que cela devait être traité spécifiquement dans le programme...
    Mais peut-être que ce comportement à changer depuis...

    a++

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Oui c'est bien le shell système qui modifie cela et non pas Java. Tu rencontres le même phénomène avec tous les langages.

    Par contre je viens de voir que c'est la même chose sous Windows alors que j'étais persuadé que ce n'était pas le cas et que cela devait être traité spécifiquement dans le programme...
    Mais peut-être que ce comportement à changer depuis...

    a++
    Sous Dos, si tu fais , il te liste les fichiers du répertoire, donc, * a la même signification que sous linux. Le seul truc chiant est la protection des espaces sous console DOS.

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par djibril Voir le message
    Sous Dos, si tu fais , il te liste les fichiers du répertoire, donc, * a la même signification que sous linux.
    Oui mais il me semble que sous Windows 9x le programme recevait seulement le caractère * et que c'était à lui de l'interpréter comme il fallait...

    Mais comme je l'ai dit je peux me tromper.

    a++

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

Discussions similaires

  1. Arguments pour et contre Access ?
    Par bottura dans le forum Sondages et Débats
    Réponses: 240
    Dernier message: 23/03/2018, 23h25
  2. Réponses: 9
    Dernier message: 09/05/2008, 23h53
  3. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22
  4. fonction renvoyant un tableau en argument
    Par Jones dans le forum Langage
    Réponses: 6
    Dernier message: 30/09/2002, 18h20
  5. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08

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