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