IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Les tableaux en Java


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut Les tableaux en Java
    bonsoir , voici d'abord mes deux classe:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    public class Livre {
      private String titre, auteur;
      private int nbPages;
      private double prix;
     
      public Livre(String unAuteur, String unTitre) {
        auteur = unAuteur;
        titre = unTitre;
      }
     
      public String getAuteur() {
        return auteur;
      }
      public String getTitre() {
        return titre;
      }
      public int getNbPages() {
        return nbPages;
      }
     
      public double getPrix() {
        return prix;
      }
     
      public void setAuteur(String unAuteur) {
        auteur = unAuteur;
      }
      public void setTitre(String unTitre) {
        titre = unTitre;
      }
      public void setNbPages(int n) {
        if (n > 0) {
          nbPages = n;
        }
        else {
          System.err.println("Erreur : nombre de pages négatif !");
        }
      }
     
      public void setPrix(double unPrix) {
        if (unPrix >= 0.0) {
          prix = unPrix;
        }
        else {
          System.err.println("Erreur : prix négatif !");
        }
      }
     
      public String toString() {
        return "Livre: titre " + titre + ", auteur "
          + auteur + ", nb pages " + nbPages + ", prix "
          + prix;
      }
     
      public static void main(String[] args) {
        Livre l1 = new Livre("Victor Hugo", "Notre Dame de Paris");
        l1.setNbPages(150);
        l1.setPrix(80.0);
        Livre l2 = new Livre("Emile Zola", "La bête humaine");
        l2.setNbPages(170);
        l2.setPrix(150.0);
        System.out.print("Livre de " + l1.getAuteur());
        System.out.println(" avec " + l1.getNbPages() + " pages.");
        System.out.print("Livre de " + l2.getAuteur());
        System.out.println(" avec " + l2.getNbPages() + " pages.");
        System.out.println(l1);
        System.out.println(l2);
      }
    }
    classe etagere:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    public class Etagere {
    	private int nblivre;// nombre de livre
    	private Livre tab[];
    	private  int a=0;// indice
     
    	public Etagere(int nb)
    	{nblivre=nb;
    	tab=new Livre[nb];
     
    	}
     
    	void ajouter(Livre l)
    	{if(a<nblivre)
         	{tab[a]=new Livre(l.getAuteur(),l.getTitre()) ;
    		a++;
    		System.out.println("le livre a bien eté ajouté");
    	    }
    	 else  System.out.println("l'etagere est remplie");
     
    	}
    	 public Livre getLivre(int i)
    	 { if( i<nblivre)
    		 return tab[i];
    	 else return null ;
     
    	 }
     
    	  public int chercher(String tit,String aut)
    	 {int i=0;
    	 while(i<a)
    	 {if(tab[i].getTitre()==tit && tab[i].getAuteur()==aut)
    		 return i+1;
    	 else i++;
     
    	 }
    	return 0;
     
    	 }
    	  public int []chercherLivre(String tit, String aut)
    	  {int i=0;
    	  int j=0;
    	   while(i<a)
    	   { if(this.tab[i].getAuteur()==aut && this.tab[i].getTitre()==tit)
    	   		{ j++;
    	   		 i++;   }
    	   else 
    		   i++;
     
    	   }
    		int[] tabb=new int [j];
    		i=0;
    		int l=0;
    		while(i<a)
    		{ if(this.tab[i].getAuteur()==aut && this.tab[i].getTitre()==tit)
    			{tabb[l]=i;
    		      l++;}
    		else 
    			i++;
     
    		}
    		System.out.println("la taille du tableau est "+tabb.length);
    		return tabb;
     
    	  }
     
    }
    mon probleme se situe dans la methode :public int []chercherLivre(String tit, String aut) (derniere methode de la classe etagere )ou je donne en parametre un auteur et un titre (de livre) et en sortie je devrais avoir les position de ses livres dans l'etagere.
    donc normalemnt j'aurai un tableau de int en sortie , or mon programme plante .
    remarque: comment faire pour recuperer un tableau en sortie.

    voici mon test(main()) ou j'ai pu ajouté des livres dans l'etagere:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Etagere E=new Etagere(5);
     
    		Livre l1=new Livre("Feri","Tferi");
    		Livre l2=new Livre("fai","tfai");
    		Livre l3=new Livre("fai","tfai");
    		Livre l4=new Livre("nari","tnari");
    		Livre l5=new Livre("fai","tfai");
    		Livre l6=new Livre("sara","tsara");
    		E.ajouter(l1);
    		E.ajouter(l2);
    		E.ajouter(l3);
    		E.ajouter(l4);
    		E.ajouter(l5);
    		E.ajouter(l6);
     
     
    		Livre a=E.getLivre(0);
    		a.getAuteur();
    		a.getTitre();
    		System.out.println("hauteur et titre   "+a.getAuteur() +"\t"+a.getTitre());
    		System.out.println("la position du livre est "+E.chercher("tfai","fai"));
     
     
    		int tab1[]= E.chercherLivre("tfai", "fai");
    		System.out.println("la taille du tableau est "+tab1.length);
    		//System.out.println("la taille du tableau est "+tab1[0]);
    merci a vous

  2. #2
    Membre régulier

    Homme Profil pro
    Lycéen-Développeur Java autodidacte
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen-Développeur Java autodidacte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Points : 117
    Points
    117
    Par défaut
    Bonjour,
    je n'ai pas regardé le code en profondeur, mais première remarque qui me viens à l'esprit : dans le main, tu crées une étagère de 5 éléments puis tu y ajoutes ... 6 éléments, donc 1 de trop

    Sinon, quel est le message d'erreur quand le programme plante ?

  3. #3
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut
    oui je rajoute un element pour voir si il sera ajouté , et il n'est pas ajouté ( ma methode contient un test qui permet de ne pas depasser la taille du tableau).
    il n'y a pas d'erreur , je pense que mon programme s'arrete au niveau de la ligne 56 de la classe etagere.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Quelques remarques:

    1) donne des noms explicites à tes variables. Tes i,j l , a, c, etc ça rend vraiment le code dur à relire
    2) on ne compare pas des object avec == mais avec la méthode equals()
    3) t'as oublié d'incrémenter i dans ta dernière boucle, donc je suppose que tu "plante" en dépassement de tableau.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    tab[a]=new Livre(l.getAuteur(),l.getTitre()) ;
    Pourquoi tu instancies une nouvelle livre?
    A+.

  6. #6
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,


    Pourquoi tu instancies une nouvelle livre?
    A+.
    ce bout de code est pris de la methode : void ajouter(Livre l)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[a]=new Livre(l.getAuteur(),l.getTitre()) ;
    permet de creer un objet livre dans un tableau d'objet.

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Oui, mais avec ton code, ça permet d'ajouter une copie du livre dans le tableau, mais pas ajouter le livre dans le tableau. C'est différent mais à toi de voir ton besoin.

    A+.

  8. #8
    Membre régulier
    Profil pro
    informatique
    Inscrit en
    Novembre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 167
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Oui, mais avec ton code, ça permet d'ajouter une copie du livre dans le tableau, mais pas ajouter le livre dans le tableau. C'est différent mais à toi de voir ton besoin.

    A+.
    j'ai essayé avec les deux codes, mon programme marche tres bien, mais juste une question pour m’éclaircir un peu les idée : dans quelle cas doit je préférer cette méthode a une autres

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    En général on ne fait des copies d'objet que quand on a l'intention de les altérer sans modifier l'original

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les tableaux en Java
    Par olivier75000 dans le forum Général Java
    Réponses: 3
    Dernier message: 17/10/2013, 18h08
  2. Les tableaux en Java
    Par momedalhouma dans le forum Général Java
    Réponses: 4
    Dernier message: 30/10/2011, 02h05
  3. [Avis] Les meilleurs programmes Java ?
    Par christopheJ dans le forum ImageJ
    Réponses: 69
    Dernier message: 07/10/2008, 01h12
  4. [java] Tableau (operation sur les tableaux)
    Par Jessika dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 04/01/2007, 13h40
  5. Les tableaux en PL/SQL
    Par GRUMLY dans le forum PL/SQL
    Réponses: 5
    Dernier message: 12/08/2002, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo