Probléme avec tableau en java

Résolu
princesseconfitureaicha Messages postés 13 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 7 juin 2009 - 4 déc. 2008 à 19:36
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 - 7 déc. 2008 à 18:09
j ai un probléme svp aidez moi ???
voilà l'ennonce de mon exercice:

on se propose de gérer une liste de clients d'une entreprise

ecrire une classe java qui permet de:

remplir une tableau de clients

AFFICHER la liste des clients

Trier le liste de clients

Ajouter un client

Supprimer un client et declarer le reste à gauche

ma solution

CLASS CLIENT

import java.util.Scanner;
public class Client{
static String Nom;
static String Prenom;
static int age;
static int cmpt=0;
static Client []tab=new Client[100];
public Client(String nom, String prenom, int age) {
    Nom = nom;
    Prenom = prenom;
    this.age = age;
}
public Client() {
}
public  static void remplir(){
    Scanner in=new Scanner(System.in);
    char car =' ';
    int i=0;
    do{
       
        System.out.println("Entrer le nom du client ?");
         Nom=in.next();
        System.out.println("Entrer le prenom du client ?");
         Prenom=in.next();
        System.out.println("Entrer l'age du client ?");
         age=in.nextInt();
         Client c=new Client(Nom,Prenom,age);
         tab[i]=new Client(Nom,Prenom,age);
         i++;
         cmpt++;
    System.out.println("voulez vous continuez à saisir ?");
    car=in.next().charAt(0);
     }while(car!='n' && car!='N');
   }
public String toString(){
    return "************Client************\rNom Client : "+Nom+"\r Prenom Client : "+Prenom+"\r Age Client : "+age+"\r*******************************";
}

public static void Afficher(){
    for (int i = 0; i <cmpt; i++) {
        System.out.println(tab[i].toString());
    }
}
public  static void trier(){

}
public static void AjouterClient(){
    Scanner in=new Scanner(System.in);
    int i=0;
    System.out.println("Entrer le nom du client ?");
     Nom=in.next();
    System.out.println("Entrer le prenom du client ?");
     Prenom=in.next();
    System.out.println("Entrer l'age du client ?");
     age=in.nextInt();
     Client c=new Client(Nom,Prenom,age);
     tab[cmpt++]=new Client(Nom,Prenom,age);
    System.out.println("votre Client a bien été ajouter Merci !!");
}
bon bréve  quand je saisit par exemple 3 clients puis je veux les afficher par la methode afficher il m'affiche le dernier clients que j'ai saisit 3 fois

voilà l execution

********Menu***********
1.Remplir un tableau de clients
2.Afficher la liste des clients
3.Trier la liste des clients
4.Ajouter un client
5.Supprimer un client et décaler le reste à gauche
6.Quitter
*******    ******************
entrez votre choix SVP ?
1
Entrer le nom du client ?
moukhliss
Entrer le prenom du client ?
hind
Entrer l'age du client ?
25
voulez vous continuez à saisir ?
o
Entrer le nom du client ?
koufi
Entrer le prenom du client ?
malika
Entrer l'age du client ?
23
voulez vous continuez à saisir ?
n
********Menu***********
1.Remplir un tableau de clients
2.Afficher la liste des clients
3.Trier la liste des clients
4.Ajouter un client
5.Supprimer un client et décaler le reste à gauche
6.Quitter
*******    ******************
entrez votre choix SVP ?
2
************Client************
Nom Client : koufi
 Prenom Client : malika
 Age Client : 23
*******************************
************Client************
Nom Client : koufi
 Prenom Client : malika
 Age Client : 23
*******************************
********Menu***********
1.Remplir un tableau de clients
2.Afficher la liste des clients
3.Trier la liste des clients
4.Ajouter un client
5.Supprimer un client et décaler le reste à gauche
6.Quitter
*******    ******************
entrez votre choix SVP ?

et merci c urgent

12 réponses

dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
5 déc. 2008 à 10:14
Salut,

Ton programme est mal conçu.
Regarde, un client ne peut avoir la liste des clients, tu es d'accord non? Pourtant tu fais ça. Chaque Client a un tableau de client.
C'est pas bon.

Il te faut faire une autre classe qui elle va contenir tout ce qui est relatif à une liste de client, véritablement quoi.
Un client n'a besoin comme méthode que de son constructeur à 3 attributs et le toString.

Dans la classe ListeClient, il y aura tout ce qui est en rapport avec la liste des clients : remplir, ajouter, enlever, trier, afficher, ...
Pour une liste de client, on ne va pas faire une tableau comme ceci :
Client [] listeClient = ...
On va faire une liste en utilisant les classes de Java prévues à cet effet :
ArrayList<Client> listeClient = new ArrayList<Client>();
Cela veut dire qu'on construit une List mais à l'intérieur, on ne pourra mettre que des objets du type Client.
Pour rajouter un client tu n'as qu'à faire :
listeClient.add(new Client(nom, prenom, age));

De plus, en faisant avec un ArrayList<Client>, ça va te permettre de pouvoir trier facilement.

Déjà, essayes de faire une nouvelle classe ListeClient, ça sera beaucoup mieux

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
3
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
5 déc. 2008 à 21:34
Pense à marquer le sujet résolu, s'il te plaît

Amuses toi bien,

++

<hr size="2" width="100%" /> C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
3
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
7 déc. 2008 à 18:09
C'est parfait, tu as très bien compris comment il fallait faire avec ce forum.

Si seulement tout le monde pouvait faire comme toi, ça serait l'idéel

<hr size="2" width="100%" /> C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
3
princesseconfitureaicha Messages postés 13 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 7 juin 2009
5 déc. 2008 à 15:30
merci pour votre aide oui ta raison il faut organisé mon code mais si tu me dis d'utiliser un arraylist c pas convenable si en lisant l enonce en haut  ils ont demander de ramplir un  tableau (et le but de ce exercice c manipuler les tableaux) c pas logique d 'utiliser les collections n es ce pas

aicha
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
5 déc. 2008 à 16:19
Ben si, parce que les tableaux... c'est nul.
Les listes, c'est de pur objets Java qui sont prévues pour ça, ça sert à rien de se compliquer la vie avec des tableaux qui sont pas tip top alors qu'il existe des solutions toutes faites qui permettront beaucoup plus de choses (notament le tri de la liste...)

En tout cas, de toute façon, que tu fasses avec un ArrayList ou pas, il te faut faire une autre classe dans la quelle tu vas avoir la listeClients comme je t'ai dis précédemment.

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
0
princesseconfitureaicha Messages postés 13 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 7 juin 2009
5 déc. 2008 à 16:31
oui tu as raison mais c pas moi qui decide je suis obligé de travail avec un tableau c un ordre de mon formateur est ce que tu me comprends je sais que ca sera mieux de travail avec un arrayliste ou un vecteur mais ..

bon voilà j ai un peu améliorer mon code et j'ai réussi tous les mthodes apart le tri malgré que j ai implementer l interface comparable Methode comparto mais quand j execute le tri il me donne un tableau on désordre qui ni suit ni notion tri croissant ni decroissant ???

VOILà MA CLASS CLIENT ::
import

java.util.Arrays;
import

java.util.Comparator;
import

java.util.Scanner;
public

class Client
implementsComparable{String

Nom;String

Prenom;

int
age;

int
cmpt= 0;Client []

tab=
new Client[100];

public

Client(String nom, String prenom,
int age) {

Nom = nom;

Prenom = prenom;

this .
age = age;}

public

Client() {}

public

void remplir(){Scanner in=

new Scanner(System.
in );

char car =
' ';

int i= 0;

do {System.

out .println(
"Entrer le nom du client ?");

Nom =in.next();System.

out.println(
"Entrer le prenom du client ?");

Prenom= in.next();System.

out .println(
"Entrer l'age du client ?");

age =in.nextInt();Client c=

new Client(
Nom,
Prenom,
age);

tab[i] =
new Client(
Nom,
Prenom,
age);i++;

cmpt++;System.

out .println(
"voulez vous continuez à saisir ?");car = in.next().charAt(0);

}

while (car! =
'n' && car!=
'N');}

public

String toString(){

return
"************Client************\rNom Client : "+
Nom+
"\r Prenom Client : "+
Prenom+
"\r Age Client : "+
age+
"\r*******************************";}

public

void Afficher(){

for (
int i = 0; i <
cmpt; i++) {System.

out .println(
tab[i].toString());}

}

public

void trier(){

for (
int i = 0; i <
cmpt; i++) {

for (
int j = i+1; j <
cmpt-1; j++) {

if((tab[age].compareTo(o))Client t=

tab[i];

tab[i]=
tab[i+1];

tab[i+1]=t; }

}

Afficher();

}

public

void AjouterClient(){Scanner in =

new Scanner(System.
in );String Nom;

String Prenom;

int age;

inti = 0;System.

out.println(
"Entrer le nom du client ?");Nom= in.next();

System.

out .println(
"Entrer le prenom du client ?");Prenom =in.next();

System.

out.println(
"Entrer l'age du client ?");age= in.nextInt();

Client c=

new Client(Nom,Prenom,age);

tab[
cmpt++] =
new Client(Nom,Prenom,age);System.

out .println(
"votre Client a bien été ajouter Merci !!");}

public

void supprimer(){Scanner in =

new Scanner(System.
in);System.

out.println(
"entrer l'indice de l element que vous voulez supprimer SVP ?");

int indice = in.nextInt();

for (
int i = 0; i <
cmpt; i++) {

if (indice == i){

tab[i]=
tab[i+1];

cmpt--;}

}

System.

out .println(
"votre client a bien été supprimer Merci !!");}

@Override

public

int compareTo(Object o) {Client c =(Client) o;

if(
age>c.
age)
return 1;

else
if(
age<c.
age)
return -1;

else
if(
Nom.compareTo(c.
Nom)>0)
return 1;

else
if(
Nom.compareTo(
Nom)<0)
return -1;

else
if(
Prenom.compareTo(
Prenom)>0)
return 1;

else
if(
Prenom.compareTo(
Prenom)<0)
return -1;

return 0;}

}

et la class main
import

java.util.Scanner;
public

class Main {
public

static
void main(String[]args){Scanner in=

new Scanner(System.
in );

int q = 0;Client c=

new Client();

do{System.

out .println(
"********Menu***********");System.

out.println(
"1.Remplir un tableau de clients ");System.

out.println(
"2.Afficher la liste des clients ");System.

out.println(
"3.Trier la liste des clients ");System.

out.println(
"4.Ajouter un client");System.

out.println(
"5.Supprimer un client et décaler le reste à gauche ");System.

out.println(
"6.Quitter");System.

out.println(
"******* ******************");System.

out.println(
"entrez votre choix SVP ?");

int choix =in.nextInt();

switch(choix){

case 1:c.remplir();
break;

case 2:c.Afficher();
break;

case 3:c.trier();
break;

case 4:c.AjouterClient();
break;

case 5:c.supprimer();
break;

case 6:System.exit(0);}

}

while(q!=6);}

}

merci d avance pour ton aide dvoraky
aicha
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
5 déc. 2008 à 16:40
Ben même combat.

Sors moi ce tableau de Client de la classe Client, ça n'a rien à faire ici.
Ensuite, dans ton compareTo, je vois que tu as oublié des "c." genre pour le nom et prenom.

Après, je dois avouer que j'ai pas regardé tout le code, mais fait deja ces modif là et on verra après

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
0
princesseconfitureaicha Messages postés 13 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 7 juin 2009
5 déc. 2008 à 16:50
wé j ai oublié les c. mais malgré il reste le mm probléme voilà la methode de tri





public










void


trier(){




for


(



int


i = 0; i <


cmpt

; i++) {




for


(



int


j =i+1; j <


cmpt

-1; j++) {Client t=



tab

[i];



tab

[i]=


tab

[i+1];



tab

[i+1]=t; }

}

Afficher();

}






aicha
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
5 déc. 2008 à 17:35
Je ne comprends pas... A aucun moment tu compares le client courant et le client suivant (tab[i] et tab[j]) ...

il te faut utiliser le compareTo dans un if

<hr size="2" width="100%" /> C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
0
princesseconfitureaicha Messages postés 13 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 7 juin 2009
5 déc. 2008 à 21:10
wé c résolut merci :)





if(tab[i].comparto(tab[j])>0)






aicha
0
princesseconfitureaicha Messages postés 13 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 7 juin 2009
5 déc. 2008 à 21:14
wé c résolut merci :)





if(tab[i].comparto(tab[j])>0)






aicha
0
princesseconfitureaicha Messages postés 13 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 7 juin 2009
5 déc. 2008 à 21:39
c la premiére fois que je pose une qst sur ce forum :) alors est ce que je dois marquée la bouton reposnée accepté ???
aicha
0
Rejoignez-nous