Machine de vote en java

Fermé
max - 31 oct. 2013 à 12:10
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 31 oct. 2013 à 18:47
Bonjour,
je dois faire un programme java pour les cours, une machine de vote (le prof avait dit que la correction était déjà sur notre intranet mais je ne l'ai toujours pas trouvé. Alors est-ce que quelqu'un pourrait m'aider svp ?

le sujet: Une machine de vote est conçue pour deux
candidats dont on ne peut pas changer le nom. Elle permet de voter autant
de fois que l'on veut, et il faut alors préciser le nom du candidat pour lequel
on vote. Elle permet d'afficher le nom du vainqueur (ou du candidat en tête,
si l''élection n'est pas terminée). Elle peut renvoyer le nombre total de votes,
le nombre de votes blancs, le nombre de votes nuls, et le nombre de votes
pour chacun des candidats. Elle peut être ré-initialisée, mais pour cela il faut
fournir un code défini lors de la création de la machine. Définissez la classe
MachineDeVote et un exemple d'utilisation de cette classe.

ce que j'ai fait:
public class Machinedevote {
private int c1;
private int c2;
private int voie;
private int votenul;
private int voteblanc;
private String nom;
private String candidat1;
private String candidat2;
private String nul;
private String blanc;
private String code;


public Machinedevote (String name, int v){
this.nom=name;
this.voie=v;
}

public void compteur(){

if (this.nom == candidat1 && this.voie == 1){
this.c1 = new Integer(this.c1 + this.voie);
}
else if (this.nom == candidat2 && this.voie == 1) {
this.c2 = new Integer(this.c2 + this.voie);
}

else if ( this.nom == nul || this.voie == 0 || this.voie > 1){
this.votenul = new Integer(this.votenul + 1);
}

else if (this.nom == blanc){
this.voteblanc =new Integer(this.voteblanc + 1);
}

else if (this.nom == code){
this.c1=0;
this.c2=0;
this.votenul=0;
this.voteblanc=0;
}
}

public int getvoie1(){
return this.c1;
}

public int getvoie2(){
return this.c2 ;
}

public int getblanc(){
return this.voteblanc;
}

public int getnul(){
return this.votenul;
}

public int getvoietotal(){
return this.voteblanc + this.votenul + this.c1 + this.c2;
}
}



Mais quand je lance mon executable:
public class Exe {

public static void main(String[] args) {
// TODO Auto-generated method stub
Machinedevote resultat = new Machinedevote("candidat1",1);
System.out.println( "voie candidat 1 = " + resultat.getvoie1());
System.out.println( "voie candidat 2 = " + resultat.getvoie2());
System.out.println( "vote blanc = " + resultat.getblanc());
System.out.println( "vote nul = " + resultat.getnul());
System.out.println( "voies total = " + resultat.getvoietotal());

}

}

Ba il m'affiche que des 0 de partout. Donc je sais plus trop quoi faire, j'ai tout essayé.
Voilà merci.
A voir également:

1 réponse

tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
31 oct. 2013 à 15:32
"
J'ai tout éssayé
" !! Je crois pas NON!

Pour commencer, ton programme ne fait que ce que tu lui demande de faire c'est à dire afficher des 0

exple la ligne
System.out.println("voie candidat 1 = " + resultat.getvoie1());

là tu appelles la méthode getvoie1() qui ne fait que retourner le contenu de c1 qui vaut 0 par défaut: A aucun moment tu ne modifies sa valeur!
et c'est le cas pour toutes les autres lignes de la classe Exe


Bien Globalement , Gros problème de conception!
D'après la description du problème, tu devrais avoir(Il serait mieux) une classe Candidat, une classe MachineDeVote,et éventuellement une classe de test.

Par exple: Si j'avais à le faire j'aurai ma classe Candidat avec :
attributs:
nom (final)
nombre de voix,...

les méthodes :
getNombreDeVoix, (qui retourne le nombre de voix)
getNOm,
AddVoix() // qui ajoute une voix lorsqu'on vote pour lui,
...
Classe MachineDeVote:
attributs:
candidat1,
candidat2,
codeReinitialisation (final) qui sera initialisé par le constructeur
..... (A compléter),

methodes
--MachieDeVote(candidat,candidat)// qui fabrique une machine de vote avec 2 candidats et génère un numero de série donc initialise la machine
--reinitialiser(numerode serie) // qui reinitialise la machine si le numero de serie passé est le bon , on peut aussi rajouté des candidats comme paramèrtre (à voir)
-- plusieurs autres méthodes qui découlent en lisant le texte


Désolé si au lieu d'apporter des éclaircissements j'ai plustôt apporté de l'ammalgamme, mais voilà!
A priori, je pense qu'il faut dabord faire une bonne modélisation pour ton problème avant de te lancer dans le code!

Bon courage!
0
merci bien. Je crois que je vais regarder ça correctement demain. Mais je comprend plus ou moins ce que tu veux me dire.
Je commence le java pour le moment il est peut être là mon problème ;)
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
31 oct. 2013 à 18:47
Et avant que tu ne poses la question : la comparaison de deux objets avec
==
ne fonctionne pas comme tu le penses. Il faut utiliser la méthode
equals
, par exemple ton code
if (this.nom == candidat1 && this.voie == 1
devient :

if (voie==1 && nom!=null && nom.equals(candidat1))
0