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

Java Discussion :

La méthode substring


Sujet :

Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut La méthode substring
    Bonjour à tous,

    J'ai un code java que j'arrive pas trouver le problème. L'utilisateur rentre une chaine ex: 10@5.99. Mon programme lui va extraire les 2 parties: 10 et 5.99. Mais lorsque l'utilisateur mais un "T" ou "t" le programme ajoute des taxes. Sinon le programme calcule les 2 nombre sans taxes.

    Le problème c'est que, quand je ne met pas de "T" afin de ne pas mettre de taxe le programme calcul comme suit:"10 * 5.99 = 59.00, sa devrait me donner plutôt: 59.90. Mais si je met un "T" là sa fonctionne. Je ne sais si le problème provient de mes substring.

    Je vais mettre mon code vous allez voir en detail:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    double tauxTaxe = 12.7 ;
    		int compteur = 0, indice1 = 0, nbre1 = 0;
    		double prixUnité, sousTotal = 0.0, coûtTaxe = 0.0, coûtTotal = 0.0, coûtTotalTaxe, coûtTotalSansTaxe = 0.0, totalFinal = 0.0;
    		String saisie = null;
     
     
    		do {
    			saisie = JOptionPane.showInputDialog("Entrez produit  ex: 123@0.00 NT").trim();
    			if (!saisie.equals("")){
    			//Extraction de données: 000@0.00
     
    				indice1 = saisie.indexOf("@");
     
    				nbre1 = Integer.parseInt(saisie.substring(0, indice1).trim());
    				prixUnité = Double.parseDouble(saisie.substring(saisie.indexOf("@")+1, saisie.length()-1));
     
    // On calcul et verification de la presence de T dans la chaine				
    				if (saisie.endsWith("t") || saisie.endsWith("T")){
     
    					coûtTotal = nbre1 * prixUnité;
    					sousTotal += coûtTotal;
    					coûtTaxe = ((coûtTotal * tauxTaxe)/100);
    					coûtTotalTaxe = coûtTotal + coûtTaxe;
    					compteur++;
    					System.out.printf("|%1$2d. %2$6s  @  %3$6.2f$   %4$6.2f$ T |\n", compteur, nbre1, prixUnité, coûtTotal);
    				}
    				else if(!(saisie.endsWith("t") || saisie.endsWith("T"))){
    				coûtTotalSansTaxe = nbre1 * prixUnité;
     
     
    				System.out.printf("|%1$2d. %2$6s  @  %3$6.2f$   %4$6.2f$ NT|\n", compteur, nbre1, prixUnité, coûtTotalSansTaxe);
    				compteur++;
    				}
    			}//Premier if			
    			else{
    				System.out.println("|===================================|");
    				System.out.printf("|Sous Total: %1$22.2f$|\n", sousTotal);
    				System.out.printf("|Taxes ("+tauxTaxe+"%%) :"+"%1$19.2f$|\n", coûtTaxe);
    				System.out.println("|===================================|");
    				System.out.printf("|Taxes         :"+"%1$19.2f$|\n", totalFinal = sousTotal + coûtTaxe);
    				System.out.println("|===================================|");
    			}
    		}while(!saisie.equals(""));

    Je vous dit merci à l'avance

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    prixUnité = Double.parseDouble(saisie.substring(saisie.indexOf("@")+1, saisie.length()-1));
    Tu ignore le dernier caractère, donc quand ça ce termine par 9 dans "10@5.99", tu ne parse que 5.9 et non pas 5.99. Par contre quand tu tappe 10@5.99T, tu parse donc 5.99.

    Tu dois d'abord tester la présence du T à la fin, le retirer et ensuite parser le nombre qui reste, plutot que de jeter d'office le dernier caractère comme tu le fais.

  3. #3
    Membre averti Avatar de Neolex
    Homme Profil pro
    Recherche emploi Securité informatique
    Inscrit en
    Avril 2011
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Recherche emploi Securité informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 243
    Points : 333
    Points
    333
    Par défaut
    Bonsoir , ton problème vient de là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    prixUnité = Double.parseDouble(saisie.substring(saisie.indexOf("@")+1, saisie.length()-1))
    cela marche bien lorsqu'il y a un T mais lorsqu'il y en a pas le (saisie.length()-1) enleve non pas le T mais le dernier chiffre .
    Donc 5.99 devient donc 5.9 ...

    Tu peux mettre cette ligne dans le if (saisie.endsWith("t") || saisie.endsWith("T")){ et mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prixUnité = Double.parseDouble(saisie.substring(saisie.indexOf("@")+1, saisie.length()))
    Bonne soirée !

    Edit : je ne suis pas assez rapide ^^

Discussions similaires

  1. La méthode Substring
    Par xeak2008 dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 04/11/2009, 08h58
  2. méthode substring javascript
    Par babalastar dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/02/2008, 11h53
  3. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  4. Réponses: 2
    Dernier message: 10/07/2002, 11h51
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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