Rechercher : dans
Par :

Probléme avec remplissage tableau en java

Dernière réponse le 5 déc 2008 à 16:18:22 sara, le 3 déc 2008 à 20:56:33 
 Signaler ce message aux modérateurs

Bonjour,

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 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 =' ';
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();
System.out.println("voulez vous continuez à saisir ?");
car=in.next().charAt(0);
}while(car!='n' && car!='N');
Client c=new Client(Nom,Prenom,age);
// for (int i = 0; i < tab.length; i++) {
tab[0]=new Client(Nom,Prenom,age);

}
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 <100; i++) {
System.out.println(tab[i].toString());

}
}
public static void trier(){
tab=new Client[tab.length];
for (int i = 0; i < tab.length; i++) {
for (int j = i+1; j < tab.length; j++) {
if((tab[i].age)>=(tab[j].age)){
Client t=tab[i];
tab[i]=tab[j];
tab[j]=t;
}
}
}
Afficher();
}
public void AjouterClient(){

}

}


class main

import java.util.Scanner;


public class Main {
public static void main(String[]args){
Scanner in=new Scanner(System.in);
int q = 0;
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:Client.remplir();break;
case 2:Client.Afficher();break;
case 3:Client.trier();
case 4:
case 5:
case 6:System.exit(0);
}
}while(q!=6);
}
}


le probléme de 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 ?
slql
Entrer le prenom du client ?
sdsd
Entrer l'age du client ?
23
voulez vous continuez à saisir ?
o
Entrer le nom du client ?
zsq
Entrer le prenom du client ?
dsd
Entrer l'age du client ?
34
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 : zsq
Prenom Client : dsd
Age Client : 34
*******************************
Exception in thread "main" java.lang.NullPointerException
at Client.Afficher(Client.java:38)
at Main.main(Main.java:21)

Configuration: Windows Vista
Firefox 2.0.0.18

Meilleures réponses pour « probléme avec remplissage tableau en java » dans :
Inverser les éléments d'un tableau -Récursivité- VoirVoici une procédure récursive qui permet d’inverser les éléments d’une partie d’un tableau compris entre la position p et n : Procedure Inverser (Var t : Tab; p, n : Integer); Var aux : Real; Begin If p < n Then ...
MySQL - Chargement d'un fichier texte dans une table VoirPour charger une fichier texte défini comme suit : $ tail /home/user1/test.txt 'nom1',1,9 'nom2',2,3 'nom3',3,54 'nom4',4,2 'nom5',5,9 Dans une table définie comme suit : CREATE TABLE chargertest ( ...
Décaler les éléments d'un tableau (Rotation) -Récursivité- VoirVoici une procédure récursive qui permet de décaler tous les éléments d’un tableau d’une position à droite à partir de la position p Procedure Decaler (Var t : Tab; p, n : integer); Begin If p
Java - L'API JDBC VoirIntroduction à JDBC La technologie JDBC (Java DataBase Connectivity) est un ensemble de classes permettant de développer des applications capables de se connecter à des serveurs de bases de données (SGBD). L'accès aux bases de données avec...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...

1

slum-dunk, le 3 déc 2008 à 21:00:37

Quelle erreur as tu?

Répondre à slum-dunk

2

sara, le 3 déc 2008 à 21:10:35

Voilà l erreur

Exception in thread "main" java.lang.NullPointerException
at Client.Afficher(Client.java:38)
at Main.main(Main.java:21)

Répondre à sara

3

slum-dunk, le 3 déc 2008 à 21:56:21

Revoir la méthode "Remplir" comme suit:

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++;
System.out.println("voulez vous continuez à saisir ?");
car=in.next().charAt(0);
}while(car!='n' && car!='N');




}

Répondre à slum-dunk

4

sara, le 3 déc 2008 à 22:10:06

Merciiiiiiiiii mnt il me remplit le tableau et m'affiche par la methode lister les info mais malgré u'il m affiche il me donne une erreur aprés

voilà l execution avec l erreur a la fin

********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 ?
ZSDs
Entrer le prenom du client ?
sdsd
Entrer l'age du client ?
23
voulez vous continuez à saisir ?
o
Entrer le nom du client ?
dksd
Entrer le prenom du client ?
sdsd
Entrer l'age du client ?
234
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 : dksd
Prenom Client : sdsd
Age Client : 234
*******************************
************Client************
Nom Client : dksd
Prenom Client : sdsd
Age Client : 234
*******************************
Exception in thread "main" java.lang.NullPointerException
at Client.Afficher(Client.java:39)
at Main.main(Main.java:21)

Répondre à sara

5

slum-dunk, le 3 déc 2008 à 22:14:50

Essaye de revoir la méthode "afficher" comme suit:

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

}

Répondre à slum-dunk

6

sara, le 3 déc 2008 à 22:18:15

J ai essayé ton code et le probléme reste le meme

:s

Répondre à sara

7

slum-dunk, le 3 déc 2008 à 22:26:06

Essaye de revoir la méthode "afficher" comme suit,en ayant saisie que 2 client avec la méthode "remplir":

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

}

Répondre à slum-dunk

8

sara, le 3 déc 2008 à 22:32:19

Oui ça marche avec 2 client

Répondre à sara

9

slum-dunk, le 3 déc 2008 à 22:56:22

Au niveau de la déclaration des attributs faut rectifier un peu com suit:

static Client []tab;

Répondre à slum-dunk

10

sara, le 4 déc 2008 à 15:29:25

Au lieu d'ecrire comme suite dans la declaration static Client []tab=new Client[100];
j'ai ecris ça static Client []tab;
et aprés j ai mis dans la boucle de la methode d'affichage comme suite:

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


et il m'a donné cette fois un probléme lors de la saisit des client voilà le probléme

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 ?
sdsd
Entrer le prenom du client ?
sdsd
Entrer l'age du client ?
23
Exception in thread "main" java.lang.NullPointerException
at Client.remplir(Client.java:26)
at Main.main(Main.java:20)

:s alors comment faire SVP

Répondre à sara

11

sara, le 4 déc 2008 à 16:18:25

J ai essayé static Client []tab; au lieu de static Client []tab=new CLient[100];

et j'ai changé la methode d'affichage comme suite:

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

et voilà il ma donné une erreur au niveau du saisit

execution avce probléme :s

********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 ?
sdsd
Entrer le prenom du client ?
sdsd
Entrer l'age du client ?
23
Exception in thread "main" java.lang.NullPointerException
at Client.remplir(Client.java:26)
at Main.main(Main.java:20)



SVPPPPPP aider moi c urgent

Répondre à sara

12

sara, le 4 déc 2008 à 16:25:21

J ai essayé static Client []tab; au lieu de static Client []tab=new Client[100];

et j'ai changé la methode afficher comme suite:


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

et voilà j ai eu un erreur lors de la saisit

voilà l execution + probléme

********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 ?
sdsd
Entrer le prenom du client ?
sdsd
Entrer l'age du client ?
23
probléme
Exception in thread "main" java.lang.NullPointerException
at Client.remplir(Client.java:26)
at Main.main(Main.java:20)


svpppppppppp aide moi c urgent

Répondre à sara

13

fiddy, le 4 déc 2008 à 16:35:52

Salut,
Repars de ta version principale. C'est tout simple l'erreur. Tu affiches les 100 clients dans ta méthode surchargée toString, et ce même si tu n'as rempli qu'un client. Du coup, ton code va vouloir afficher un NULL, d'où l'erreur d'exception. Il faut donc que tu gères une variable qui contient le nombre de clients remplis ;)
Cdlt
Google is your friend

Répondre à fiddy

14

sara, le 4 déc 2008 à 16:45:11

Oui merci c est résolut :)

j ai utilisé une variable:
static int cmpt=0; qui s'incremente lors de la saisit

dans la methodes affichage j ai fais comme suite

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

merci pour votre aide :)

Répondre à sara

15

fiddy, le 4 déc 2008 à 17:02:54

Exactement ce qu'il fallait faire. Bien joué ;)
Par contre, juste une petite remarque, évite les variables globales. Il vaut mieux passer ton tableau et la taille en paramètre dans tes fonctions ;)
Cdlt
Google is your friend

Répondre à fiddy

16

sara, le 4 déc 2008 à 17:15:08

Merci pour l info mais tu peux m expliquer svp pourquoi c mieux de les donner en paramétre des fonctions au lieu de les declarer globale
???

Répondre à sara

17

sara, le 4 déc 2008 à 18:36:29

Re j ai un bléme au niveau de la methode trier :s pouvais vous la voire en haut

Répondre à sara

18

sara, le 4 déc 2008 à 19:10:39

J ai cru que j'ai réparer la methode afficher mais c le contraire il n y a aucun exception mais il y a une repétition saund j entre 3 clients et je veux afficher elle m afficher le dernier client 3 fois dans la methode afficher voilà le code

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());
}
}







svp il faut que je rend ce tp dm1 inchalah :s

Répondre à sara

19

sara, le 4 déc 2008 à 22:08:37

Svp repondez moi c urgent

Répondre à sara

20

sara, le 4 déc 2008 à 22:33:06

SVP répondez moi c urgenttttttttttttttttttttttttttt il faut ue je rend ce tp dm1

Répondre à sara
Collection CommentÇaMarche.net