Java tableau d'objets

Fermé
y2jeff Messages postés 78 Date d'inscription jeudi 22 décembre 2011 Statut Membre Dernière intervention 24 janvier 2013 - 24 mai 2012 à 13:17
y2jeff Messages postés 78 Date d'inscription jeudi 22 décembre 2011 Statut Membre Dernière intervention 24 janvier 2013 - 24 mai 2012 à 15:23
Bonjour,


J'ai quelques difficultés avec la POO, j'arrive a faire des tableaux. Mais je n'arrive pas a faire un tableau d'objet dans ce programme:
Je n'arrive pas a creer un tableau de Contribuable.


package contribuable;

import java.util.Scanner;

public class Main {


public static void main(String[] args) {
CalculateurImpot calculateurImpot = new CalculateurImpot();
Contribuable contribuable = new Contribuable();
DialogueUtilisateur du = new DialogueUtilisateur(contribuable, calculateurImpot);
du.demarrer();
}
}

public class Contribuable {
private String nom;
private String prenom;
private double revenus;

public String getNom() {
return nom;
}

public String getPrenom() {
return prenom;
}

public double getRevenus() {
return revenus;
}

public void setNom(String nom) {
this.nom = nom;
}

public void setPrenom(String prenom) {
this.prenom = prenom;
}

public void setRevenus(double revenus) {
this.revenus = revenus;
}

}

public class CalculateurImpot {
private double limites[];
private double taux[];

public CalculateurImpot(){
limites = new double[7];
taux = new double[7];

for(int i=0; i<limites.length; ++i){
limites[i] = i*5000.0;
taux[i] = 0.10+(i*0.05);
}
taux[0] = 0.0;
}

public double calculerImpot(double revenu){
int i=0;
double impot = 0;
while(i<limites.length-1 && revenu>limites[i+1]){
impot += 5000*taux[i];
++i;
}//ici i=6 ou revenu <= limites[i+1]
impot += (revenu - limites[i])*taux[i];
return impot;
}


}


public class DialogueUtilisateur {
private Contribuable contribuable;
private CalculateurImpot calculateurImpot;
private Scanner input;

public DialogueUtilisateur(Contribuable contribuable, CalculateurImpot calculateurImpot){
this.contribuable = contribuable;
this.calculateurImpot = calculateurImpot;
input = new Scanner(System.in);
}
public void demarrer(){
int choix = 0;
do{
choix = encoderChoix();
switch(choix){
case 1: encoderContribuable(); break;
case 2: calculerImpot(); break;
default: break;
}
}while(choix!=3);
//ici,choix=3 ==> Sortie du programme
System.exit(0);

}
private int encoderChoix(){
int choix;
System.out.println("1. Encoder un contribuable");
System.out.println("2. Calculer l'impot");
System.out.println("3. Quitter");
System.out.print("Votre choix? ");

choix = input.nextInt();
input.nextLine();

return choix;
}
private void encoderContribuable(){
System.out.print("Nom: ");
String nom = input.nextLine();
System.out.print("Prénom: ");
String prenom = input.nextLine();
contribuable.setNom(nom);
contribuable.setPrenom(prenom);
System.out.print("Revenu en euros : ");
contribuable.setRevenus(input.nextDouble());
input.nextLine();
}
private void calculerImpot(){
double impotDu = calculateurImpot.calculerImpot(contribuable.getRevenus());
System.out.printf("Nom: %s \t Prénom: %s \n", contribuable.getNom(), contribuable.getPrenom());
System.out.printf("Revenu : %.2f \tImpot du : %.2f\n",contribuable.getRevenus(),impotDu);
}
}
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
24 mai 2012 à 13:36
Il n'y a pourtant pas de différences avec un tableau de types primitifs :

Contribuable[] tableau = new Contribuable[taille_du_tableau];
0
y2jeff Messages postés 78 Date d'inscription jeudi 22 décembre 2011 Statut Membre Dernière intervention 24 janvier 2013 4
24 mai 2012 à 14:02
quand je fais ca, mon programme plante au moment de devoir rentrer le revenu du premier contribuable
0
y2jeff Messages postés 78 Date d'inscription jeudi 22 décembre 2011 Statut Membre Dernière intervention 24 janvier 2013 4
24 mai 2012 à 14:07
je crois avoir pigé, faut que je modifie tout mon dialogueUtilisateur

rajouter la taille du tableau en parametre de encoderContribuable()
0
y2jeff Messages postés 78 Date d'inscription jeudi 22 décembre 2011 Statut Membre Dernière intervention 24 janvier 2013 4
24 mai 2012 à 14:58
apres ca faut que je modifie encoderContribuable() de façon a ce que les input s'encodent dans le bon objet du tableau. Mais je sais pas du tout comment faire. Je ne vois absolument pas comment faire.

public class DialogueUtilisateur {
private Contribuable contribuable;
private CalculateurImpot calculateurImpot;
private Scanner input;

public DialogueUtilisateur(Contribuable contribuable, CalculateurImpot calculateurImpot){
this.contribuable = contribuable;
this.calculateurImpot = calculateurImpot;
input = new Scanner(System.in);
}
public void demarrer(){
int choix = 0;
do{
choix = encoderChoix();
switch(choix){
case 1: encoderContribuable(); break;
case 2: calculerImpot(); break;
default: break;
}
}while(choix!=3);
//ici,choix=3 ==> Sortie du programme
System.exit(0);

}
private int encoderChoix(){
int choix;
System.out.println("1. Encoder un contribuable");
System.out.println("2. Calculer l'impot");
System.out.println("3. Quitter");
System.out.print("Votre choix? ");

choix = input.nextInt();
input.nextLine();

return choix;
}
private void encoderContribuable(){
System.out.print("Nom: ");
String nom = input.nextLine();
System.out.print("Prénom: ");
String prenom = input.nextLine();
contribuable.setNom(nom);
contribuable.setPrenom(prenom);
System.out.print("Revenu en euros : ");
contribuable.setRevenus(input.nextDouble());
input.nextLine();
}
0
y2jeff Messages postés 78 Date d'inscription jeudi 22 décembre 2011 Statut Membre Dernière intervention 24 janvier 2013 4
24 mai 2012 à 15:01
logiquement grace a la methode:
DialogueUtilisateur du = new DialogueUtilisateur(contribuable[i], calculateurImpot[i]);

c'est sencé directement creer l'objer au bon endroit dans le tableau.

je ne comprend pas pourquoi ca plante
0
y2jeff Messages postés 78 Date d'inscription jeudi 22 décembre 2011 Statut Membre Dernière intervention 24 janvier 2013 4
24 mai 2012 à 15:02
j'ai juste modifié ca:

public static void main(String[] args) {
CalculateurImpot[] calculateurImpot = new CalculateurImpot[5];
Contribuable[] contribuable = new Contribuable[5];
for(int i=0; i<5 ; i++){
DialogueUtilisateur du = new DialogueUtilisateur(contribuable[i], calculateurImpot[i]);
du.demarrer(i);
}
0