Erreur dans programme java

Résolu
rapidegoyes Messages postés 81 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 26 septembre 2024 - Modifié le 8 juil. 2024 à 22:13
rapidegoyes Messages postés 81 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 26 septembre 2024 - 11 juil. 2024 à 22:59

Bonsoir à tous,

J'essaye la programmation java avec orienté objet.

Mon programme ne calcule pas le montant de ma TVA.

Il y a une erreur de résultat:  Montant de la TVA  :0.0

Vraiment je trouve pas l'erreur !

Voici mon code

Merci pour votre aide

très cordialement à +++

rapidegoyes

package calcultaxePOO;

public class Tvacalcul {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		imprimer();
		
	}
	
	public static void imprimer() {
		TVA resultat = new TVA(2000, 20, 0);
		System.out.println("Montant de la TVA  :" + resultat.sommeTva);
	}
	
}//fin de la class	Tvacalcul
	
class TVA {
		double recettes ;//variables
		double tva;
		public double sommeTva;
		
		//constructeur
		public TVA (double recettes, double tva, double sommeTva) {
			this.recettes = recettes;
			this.tva = tva;
			this.sommeTva = sommeTva;
		}
		
		public double calculTVA(double recettes, double tva, double sommeTva){
			sommeTva = ((recettes * tva)/ 100);
			return sommeTva;
		}
	
}// fin de la class TVA
A voir également:

4 réponses

Whismeril Messages postés 19147 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 5 octobre 2024 919
9 juil. 2024 à 08:31

Bonjour

pour répondre "bêtement" à ta question, à aucun moment tu n'apppelles la méthode de calcul.

Mais, je t'invite à réfléchir à tes signatures et tes noms de variables.

En général, on appelle somme ou montant hors taxe le montant avant application de la TVA et somme pu montant TTC pour toutes taxes comprises le,montant avec la TVA. 

Pour tes signatures, pourquoi mettre "sommeTVA" en paramètre du constructeur puisque le rôle de la classe est de calculer cette valeur?

Et calculTVA est une méthode de la classe, elle a donc accès aux champs privés, elle n'a donc pas besoin de paramètres. Il n'est pas non plus nécessaire qu'elle retourne une valeur (mais elle peut), par contre elle doit affecter le champs privés.

De plus des paramètres du même noms que les champs privés ça peut poser des problèmes si on oublie ensuite d'utiliser this quand c'est nécessaire 


0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
9 juil. 2024 à 13:14

Bonjour,

Je plussoie.

Si la conception était bien faite, il n'y aurait pas de raison de tomber sur un piège aussi bête.

Le typage de tes objets est primordial, pour savoir ce que tu manipules et ne pas se tromper.

Si tu mets des double partout, tu ne sais plus ce que tu manipules et au final ta classe sers juste à faire une multiplication de manière compliquée...

Voici une proposition de typage :

record Montant(double valeur, String devise) {}
class MontantHT extends Montant {}
class MontantTTC extends Montant {}
record Taux(double valeur) {}

class CalculTaux {
    static MontantTTC calculTaxe(MontantHT montant, Taux taux) {
        return ...
    }
}
0
Whismeril Messages postés 19147 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 5 octobre 2024 919 > KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024
9 juil. 2024 à 20:11

Salut

oui bien sûr, mais je ne sais pas si rapidegoyes en est là dans sa formation.

0
rapidegoyes Messages postés 81 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 26 septembre 2024 7
11 juil. 2024 à 22:23

Bonsoir à tous,

Un grand merci de m'avoir répondu !

Je ne suis pas un étudiant mais un retraité de 84 au jus.

La programmation est devenu mon passe temps.

Tout simplement j'essaie de comprendre la poo en java.

J'ai simplifié mon essai en tenant compte de vos remarques.

Et j'ai suivi un tuto en tenant compte des conseils ci-dessous

L'opérateur new se charge de créer une instance de la classe et de l'associer à la variable

L'opérateur new est un opérateur de haute priorité qui permet d'instancier des objets et d'appeler une méthode particulière de cet objet

Je veux tout simplement mieux comprendre avec un exercice à ma sauce !!!

Je bute sur la sortie suivante : Il reste dans la poche de bibi  :0

Normalement je devrai avoir le chiffre 190

voici mon code

package essaiPOO1;

public class PooEssai {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		imprimer();

	}
	
	public static void imprimer() {
		
		//L'opérateur new se charge de créer une instance de la classe Soustraction
		Soustraction reste = new Soustraction(200,10,0);
		//new permet d'instancier des objets et d'appeler une méthode particulière de cet objet
		System.out.println("Il reste dans la poche de bibi  :" + reste.resteAbibi);
	}

}

class Soustraction {
	int bibiPossède; //variables
	int totoLuiPrend;
	int resteAbibi;
	
	//constructeur
	public Soustraction (int bibiPossède, int totoLuiPrend, int resteAbibi) {
		this.bibiPossède = bibiPossède;
		this.totoLuiPrend = totoLuiPrend;
		this.resteAbibi = resteAbibi;
	}
	
	public double calculTVA(){
		resteAbibi = (bibiPossède - totoLuiPrend);
		return resteAbibi;
	}

}// fin de la class Soustraction
0
rapidegoyes Messages postés 81 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 26 septembre 2024 7
11 juil. 2024 à 22:44

Re Bonsoir,

J'ai corrigé mon code au niveau du constructeur mais j'ai toujours le résultat erroné suivant: Il reste dans la poche de bibi  :0

Merci pour toute aide

cordialement

rapidegoyes

Le code:

package essaiPOO1;

public class PooEssai {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		imprimer();

	}
	
	public static void imprimer() {
		
		//L'opérateur new se charge de créer une instance de la classe Soustraction
		Soustraction reste = new Soustraction(200,10);
		//new permet d'instancier des objets et d'appeler une méthode particulière de cet objet
		System.out.println("Il reste dans la poche de bibi  :" + reste.resteAbibi);
	}

}

class Soustraction {
	int bibiPossède; //variables
	int totoLuiPrend;
	int resteAbibi;
	
	//constructeur
	public Soustraction (int bibiPossède, int totoLuiPrend) {
		this.bibiPossède = bibiPossède;
		this.totoLuiPrend = totoLuiPrend;
		
	}
	
	public double calculReste(){
		resteAbibi = (bibiPossède - totoLuiPrend);
		return resteAbibi;
	}

}// fin de la class Soustraction
0
rapidegoyes Messages postés 81 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 26 septembre 2024 7
11 juil. 2024 à 22:59

Re Bonsoir à tous,

J'ai trouvé mon erreur:

System.out.println("Il reste dans la poche de bibi  :" + reste.calculReste());

j'avais tout bêtement appelé ma variable au lieu de la méthode de calcul.

l'erreur  + reste.resteAbibi

Très cordialement à +++

rapidegoyes

0