Aide Java2
Résolu/Fermé
hedii
Messages postés
39
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
19 juin 2013
-
29 mai 2013 à 18:07
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 - 3 juin 2013 à 18:07
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 - 3 juin 2013 à 18:07
32 réponses
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
30 mai 2013 à 15:13
30 mai 2013 à 15:13
Bonjour,
Pour les opérations sur les livres, tu en fait ce que tu souhaites selon tes besoins.
PS: je ne comprend pas ce que vous faites pour ajouter un livre; ne peut on pas juste appeler la fonction comme en C++ ?
NON Que ce soit en java ou en c++, si tu fais de l'Orienté Objet, alors les appels de méthodes se font comme je l'ai fait (Prend l'habitude de le faire comme celà),
Sauf pour des méthodes interne (Je t'invite à chercher un petit tuto de débutant en java, tu devrais très rapidement trouver ton compte).
Ajoutez plusieurs Livre d'un même Auteur dans la bibliothèque, et définissez une
fonction qui prend comme paramètre le nom d'un auteur, et qui renvoie une
bibliothèque contenant tous les ouvrages présents de cet auteur dans la
bibliothèque courante.
On retombe dans le scénario de ton programme de départ, Ou il faut(Pas nécessairement, mais idéalement) une Classe Livre
Ou un livre est un objet avec un titre, un auteur,un éditeur,une date de parution...
Toute fois tu pourrais t'en passer et utiliser des tableaux à deux entrées, une pour le titre, et une pour l'auteur (MAIS lorsque les infos à rajouter sur le livre augmentent, alors tu te retrouve très vite coincé)
Au fait vous avez remplacer pour le tableau Livre par String pour pouvoir comparer dans retirer livre avec == au lieu de equals
NON PAS DUTOUT!!
Je l'ai fait juste pour faire simple, vu que tu utilisais une classe Livre dont tu n'avais pas conaissance de l'existence.
Et je pense qu'au final c'est une bonne chose car maintenant avec ce que je viens de te dire sur le stockage de tes livres dans les tableaux tu vois bien la nécessité d'utiliser plustôt un objet Livre au lieu de chaines de caractères comme précedement.
La difficulté(Qui n'en n'est pas vraiment une) est maintenant de réfléchir à ton objet Livre.
Je te laisse y réfléchir!
Pour les opérations sur les livres, tu en fait ce que tu souhaites selon tes besoins.
PS: je ne comprend pas ce que vous faites pour ajouter un livre; ne peut on pas juste appeler la fonction comme en C++ ?
NON Que ce soit en java ou en c++, si tu fais de l'Orienté Objet, alors les appels de méthodes se font comme je l'ai fait (Prend l'habitude de le faire comme celà),
Sauf pour des méthodes interne (Je t'invite à chercher un petit tuto de débutant en java, tu devrais très rapidement trouver ton compte).
Ajoutez plusieurs Livre d'un même Auteur dans la bibliothèque, et définissez une
fonction qui prend comme paramètre le nom d'un auteur, et qui renvoie une
bibliothèque contenant tous les ouvrages présents de cet auteur dans la
bibliothèque courante.
On retombe dans le scénario de ton programme de départ, Ou il faut(Pas nécessairement, mais idéalement) une Classe Livre
Ou un livre est un objet avec un titre, un auteur,un éditeur,une date de parution...
Toute fois tu pourrais t'en passer et utiliser des tableaux à deux entrées, une pour le titre, et une pour l'auteur (MAIS lorsque les infos à rajouter sur le livre augmentent, alors tu te retrouve très vite coincé)
Au fait vous avez remplacer pour le tableau Livre par String pour pouvoir comparer dans retirer livre avec == au lieu de equals
NON PAS DUTOUT!!
Je l'ai fait juste pour faire simple, vu que tu utilisais une classe Livre dont tu n'avais pas conaissance de l'existence.
Et je pense qu'au final c'est une bonne chose car maintenant avec ce que je viens de te dire sur le stockage de tes livres dans les tableaux tu vois bien la nécessité d'utiliser plustôt un objet Livre au lieu de chaines de caractères comme précedement.
La difficulté(Qui n'en n'est pas vraiment une) est maintenant de réfléchir à ton objet Livre.
Je te laisse y réfléchir!
hedii
Messages postés
39
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
19 juin 2013
29 mai 2013 à 18:09
29 mai 2013 à 18:09
Je vous donne le programme en entier, si besoin est:
package tp1ex2;
/**
*
* @author 12mi143
*/
public class Bibliothèque {
private final int nombreLivresMax=5;
private int nombreLivre;
private Livre[] livres;
/** Creates a new instance of Bibliothèque */
public Bibliothèque() {
nombreLivre=0;
livres = new Livre[5];
}
public boolean ajouterLivre(Livre livre) {
boolean resultat;
if(nombreLivre<nombreLivresMax) {
livres[nombreLivre]=livre;
nombreLivre++;
resultat=true;
}
else{
resultat=false;
}
return resultat;
}
public void contenu() {
for (int i=0; i<nombreLivre; i++) {
System.out.println("contenu:" +livres[i]);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
ajouterLivre(livre1);
}
}
package tp1ex2;
/**
*
* @author 12mi143
*/
public class Bibliothèque {
private final int nombreLivresMax=5;
private int nombreLivre;
private Livre[] livres;
/** Creates a new instance of Bibliothèque */
public Bibliothèque() {
nombreLivre=0;
livres = new Livre[5];
}
public boolean ajouterLivre(Livre livre) {
boolean resultat;
if(nombreLivre<nombreLivresMax) {
livres[nombreLivre]=livre;
nombreLivre++;
resultat=true;
}
else{
resultat=false;
}
return resultat;
}
public void contenu() {
for (int i=0; i<nombreLivre; i++) {
System.out.println("contenu:" +livres[i]);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
ajouterLivre(livre1);
}
}
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
29 mai 2013 à 21:13
29 mai 2013 à 21:13
remplace ajouterLivre(livre1); par
Livre livre1 = new Livre();
Bibliotheque biblio = new bibliotheque();
biblio.ajouterLivre(livre1);
En supposant que tu aies bien une classe qui s'appelle Livre
Livre livre1 = new Livre();
Bibliotheque biblio = new bibliotheque();
biblio.ajouterLivre(livre1);
En supposant que tu aies bien une classe qui s'appelle Livre
hedii
Messages postés
39
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
19 juin 2013
29 mai 2013 à 21:43
29 mai 2013 à 21:43
Bonjour merci pour votre aide, cela ne marche pas :s.
Votre ligne Bibliotheque... ca ne me parait pas etre cela.
J'ai ecrit mon programme complet en réponse.
Merci pour votre aide!
Votre ligne Bibliotheque... ca ne me parait pas etre cela.
J'ai ecrit mon programme complet en réponse.
Merci pour votre aide!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
29 mai 2013 à 22:04
29 mai 2013 à 22:04
En effet je n'ai pas fait attention en ecrivant.
1- je t'ai proposé 3 lignes et non 1
2- Ta classe Bibliotheque a un accent grave sur le e (Bibliothèque) vérifies que Bibliotheque dans ce que je t'ai proposé a la même écriture que ce que tu as.
3-Rassure toi que tu as effectivement une classe Livre à coté!
4- Voici un main de test: (Tu remplace ton main une fois que toutes les conditions ci-dessus sont remplies)
public static void main(String [] args){
Livre livre = new Livre();
Bibliotheque biblio = new Bibliotheque();
if (biblio.ajouterLivre()){
System.out.println("Le Livre a été ajouté!");
}
else {
System.out.println("Le livre n'a pas été ajouté");
}
}
1- je t'ai proposé 3 lignes et non 1
2- Ta classe Bibliotheque a un accent grave sur le e (Bibliothèque) vérifies que Bibliotheque dans ce que je t'ai proposé a la même écriture que ce que tu as.
3-Rassure toi que tu as effectivement une classe Livre à coté!
4- Voici un main de test: (Tu remplace ton main une fois que toutes les conditions ci-dessus sont remplies)
public static void main(String [] args){
Livre livre = new Livre();
Bibliotheque biblio = new Bibliotheque();
if (biblio.ajouterLivre()){
System.out.println("Le Livre a été ajouté!");
}
else {
System.out.println("Le livre n'a pas été ajouté");
}
}
hedii
Messages postés
39
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
19 juin 2013
29 mai 2013 à 22:13
29 mai 2013 à 22:13
Bonjour, il n'y a pasde classe livre ! (désolé pour la remarque sur le bibliotheque c'est parce que je me suis trompé avec un exercice où la classe est "Livre" donc ca m'aparru bizarre).
Voici le programme entier:
package tp1ex2;
/**
*
* @author 12mi143
*/
public class Bibliothèque {
private final int nombreLivresMax=5;
private int nombreLivre;
private Livre[] livres;
/** Creates a new instance of Bibliothèque */
public Bibliothèque() {
nombreLivre=0;
livres = new Livre[5];
}
public boolean ajouterLivre(Livre livre) {
boolean resultat;
if(nombreLivre<nombreLivresMax) {
livres[nombreLivre]=livre;
nombreLivre++;
resultat=true;
}
else{
resultat=false;
}
return resultat;
}
public boolean retirerLivre(Livre livre) {
boolean resultat;
for (int i=0; i<nombreLivre; i++) {
}
}
public void contenu() {
for (int i=0; i<nombreLivre; i++) {
System.out.println("contenu:" +livres[i]);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}
}
Voici le programme entier:
package tp1ex2;
/**
*
* @author 12mi143
*/
public class Bibliothèque {
private final int nombreLivresMax=5;
private int nombreLivre;
private Livre[] livres;
/** Creates a new instance of Bibliothèque */
public Bibliothèque() {
nombreLivre=0;
livres = new Livre[5];
}
public boolean ajouterLivre(Livre livre) {
boolean resultat;
if(nombreLivre<nombreLivresMax) {
livres[nombreLivre]=livre;
nombreLivre++;
resultat=true;
}
else{
resultat=false;
}
return resultat;
}
public boolean retirerLivre(Livre livre) {
boolean resultat;
for (int i=0; i<nombreLivre; i++) {
}
}
public void contenu() {
for (int i=0; i<nombreLivre; i++) {
System.out.println("contenu:" +livres[i]);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}
}
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
29 mai 2013 à 22:34
29 mai 2013 à 22:34
Ok , Je t'explique le truc :
Tu as une classe Bibliotheque qui manipule des Objets "Livre".
Les opérations qu'on peut effectuer sur ta bibliotheque sont les suivants:
-Ajouter un livre: Dans ce cas une valeur booléenne (oui ou non) est retournée pour dire si oui ou non ton livre a été ajouté.
-retirer un livre : pareil, un booléen est retourné et te dis si oui ou non le livre a été retiré
-lister le contenu de ta bibliotheque.
Dans ton exercice, on ajoutais probabablement des objets Livre, crées préalablement:
On va faire autrement. et remplacer les livres juste par leurs noms (Des chaines de caractères.)
Voici un code identique au tiens, à la seule difference que Les livres sont désormais des chaines de caractères (On va dire qu'il s'agit de leur intitulés)
Il te suffit alors de copier et de remplacer en totalité ton code et de voir les differences ; ce sera pas difficile à comprendre.
public class Bibliothèque {
private final int nombreLivresMax = 5;
private int nombreLivre;
private String[] livres;
/**
* Creates a new instance of Bibliothèque
*/
public Bibliothèque() {
nombreLivre = 0;
livres = new String[5];
}
public boolean ajouterLivre(String livre) {
boolean resultat;
if (nombreLivre < nombreLivresMax) {
livres[nombreLivre] = livre;
nombreLivre++;
resultat = true;
} else {
resultat = false;
}
return resultat;
}
public boolean retirerLivre(String livre) {
boolean resultat=false;
for (int i = 0; i < nombreLivre; i++) {
if (livres[i]==livre){
resultat = true;
livres[i] = " ";
}
}
return resultat;
}
public void contenu() {
for (int i = 0; i < nombreLivre; i++) {
System.out.println("contenu:" + livres[i]);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Bibliothèque biblio = new Bibliothèque();
for (int i=0; i<5;i++){
if(biblio.ajouterLivre("Livre Numero"+i)){
System.out.println("Le Livre Numero"+i+" a été ajouté");
};
}
//Ici on liste les livres qui ont été ajoutés
System.out.println("Contenu de Ma bibliotheque");
biblio.contenu();
// Tu peux t'amuser aussi à retirer des livres.
}
}
Tu as une classe Bibliotheque qui manipule des Objets "Livre".
Les opérations qu'on peut effectuer sur ta bibliotheque sont les suivants:
-Ajouter un livre: Dans ce cas une valeur booléenne (oui ou non) est retournée pour dire si oui ou non ton livre a été ajouté.
-retirer un livre : pareil, un booléen est retourné et te dis si oui ou non le livre a été retiré
-lister le contenu de ta bibliotheque.
Dans ton exercice, on ajoutais probabablement des objets Livre, crées préalablement:
On va faire autrement. et remplacer les livres juste par leurs noms (Des chaines de caractères.)
Voici un code identique au tiens, à la seule difference que Les livres sont désormais des chaines de caractères (On va dire qu'il s'agit de leur intitulés)
Il te suffit alors de copier et de remplacer en totalité ton code et de voir les differences ; ce sera pas difficile à comprendre.
public class Bibliothèque {
private final int nombreLivresMax = 5;
private int nombreLivre;
private String[] livres;
/**
* Creates a new instance of Bibliothèque
*/
public Bibliothèque() {
nombreLivre = 0;
livres = new String[5];
}
public boolean ajouterLivre(String livre) {
boolean resultat;
if (nombreLivre < nombreLivresMax) {
livres[nombreLivre] = livre;
nombreLivre++;
resultat = true;
} else {
resultat = false;
}
return resultat;
}
public boolean retirerLivre(String livre) {
boolean resultat=false;
for (int i = 0; i < nombreLivre; i++) {
if (livres[i]==livre){
resultat = true;
livres[i] = " ";
}
}
return resultat;
}
public void contenu() {
for (int i = 0; i < nombreLivre; i++) {
System.out.println("contenu:" + livres[i]);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Bibliothèque biblio = new Bibliothèque();
for (int i=0; i<5;i++){
if(biblio.ajouterLivre("Livre Numero"+i)){
System.out.println("Le Livre Numero"+i+" a été ajouté");
};
}
//Ici on liste les livres qui ont été ajoutés
System.out.println("Contenu de Ma bibliotheque");
biblio.contenu();
// Tu peux t'amuser aussi à retirer des livres.
}
}
hedii
Messages postés
39
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
19 juin 2013
Modifié par hedii le 29/05/2013 à 23:48
Modifié par hedii le 29/05/2013 à 23:48
Merci a vous tksteph ! Je regarde tout ca demain et vous dis si cela correspond ben a ce que je dois faire.
Mais il y a juste une erreur a la derniere ligne
biblio.contenu(); => reached end of file while parsing
PS: a quoi servent les 2 derneires lignes a l'exterieur du main ? sont elles obligatoires ?
Mais il y a juste une erreur a la derniere ligne
biblio.contenu(); => reached end of file while parsing
PS: a quoi servent les 2 derneires lignes a l'exterieur du main ? sont elles obligatoires ?
hedii
Messages postés
39
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
19 juin 2013
Modifié par hedii le 30/05/2013 à 13:55
Modifié par hedii le 30/05/2013 à 13:55
Bonjour, le probleme pour retirer les livres c'est qu'il ne faut pas qu'il y ait un blanc a la place mais que les livres se decalent pour qu'il y en ait un en moins.
J'ai donc juste remplacé votre " " par livre[i+1]
PS: je ne comprend pas ce que vous faites pour ajouter un livre; ne peut on pas juste appeler la fonction comme en C++ ?
Voici la question qui sera la derniere si le retirer livre est correct:
7) Ajoutez plusieurs Livre d'un même Auteur dans la bibliothèque, et définissez une
fonction qui prend comme paramètre le nom d'un auteur, et qui renvoie une
bibliothèque contenant tous les ouvrages présents de cet auteur dans la
bibliothèque courante.
PS: Au fait vous avez remplacer pour le tableau Livre par String pour pouvoir comparer dans retirer livre avec == au lieu de equals ?
J'ai donc juste remplacé votre " " par livre[i+1]
PS: je ne comprend pas ce que vous faites pour ajouter un livre; ne peut on pas juste appeler la fonction comme en C++ ?
Voici la question qui sera la derniere si le retirer livre est correct:
7) Ajoutez plusieurs Livre d'un même Auteur dans la bibliothèque, et définissez une
fonction qui prend comme paramètre le nom d'un auteur, et qui renvoie une
bibliothèque contenant tous les ouvrages présents de cet auteur dans la
bibliothèque courante.
PS: Au fait vous avez remplacer pour le tableau Livre par String pour pouvoir comparer dans retirer livre avec == au lieu de equals ?
Merci pour les infos :) je comprends mieux le programme.
Nous avons en effet créer une classe livre que voici:
public class Livre {
private String titre;
private String auteur;
/** Creates a new instance of Livre */
public Livre(String titre, String auteur) {
this.auteur=auteur;
this.titre=titre;}
public String getTitre() {
return titre;
}
public void setTitre(String titre) {
this.titre = titre;
}
public String getAuteur() {
return auteur;
}
public void setAuteur(String auteur) {
this.auteur = auteur;
}
}
C'est compliqué pour moi :s, comment donc ajouter un livre d'une manière simple ?
Nous avons en effet créer une classe livre que voici:
public class Livre {
private String titre;
private String auteur;
/** Creates a new instance of Livre */
public Livre(String titre, String auteur) {
this.auteur=auteur;
this.titre=titre;}
public String getTitre() {
return titre;
}
public void setTitre(String titre) {
this.titre = titre;
}
public String getAuteur() {
return auteur;
}
public void setAuteur(String auteur) {
this.auteur = auteur;
}
}
C'est compliqué pour moi :s, comment donc ajouter un livre d'une manière simple ?
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
30 mai 2013 à 23:01
30 mai 2013 à 23:01
Bien tu rajoutes ta classe Livre ci-dessus à coté de ta classe bibliothèque, et dans le code de la classe bibliothèque tu remplace les tableaux de String par des tableaux de livres.
E.g : String[] livres devient Livre[] livres;
Les méthodes ajouter et retirer seront aussi à modifier légèrement.
Essaie déja de faire ça
E.g : String[] livres devient Livre[] livres;
Les méthodes ajouter et retirer seront aussi à modifier légèrement.
Essaie déja de faire ça
hedii
Messages postés
39
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
19 juin 2013
31 mai 2013 à 12:24
31 mai 2013 à 12:24
Bonjour!
J'ai donc remi le programme precedent, il y en effet une erreur a la ligne:
Et voici le retirer livre^où il y avait alors une erreur:
public boolean retirerLivre(String livre) {
boolean resultat=false;
for (int i = 0; i < nombreLivre; i++) {
if (livres[i].equals(livre)){
resultat = true;
livres[i] = livres[i+1];
}
}
return resultat;
PS: Ma classe livre est dans un autre fichier du meme projet.
Merci pour votre aide franchement !
J'ai donc remi le programme precedent, il y en effet une erreur a la ligne:
Et voici le retirer livre^où il y avait alors une erreur:
public boolean retirerLivre(String livre) {
boolean resultat=false;
for (int i = 0; i < nombreLivre; i++) {
if (livres[i].equals(livre)){
resultat = true;
livres[i] = livres[i+1];
}
}
return resultat;
PS: Ma classe livre est dans un autre fichier du meme projet.
Merci pour votre aide franchement !
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
31 mai 2013 à 14:59
31 mai 2013 à 14:59
J'ai donc remi le programme precedent, il y en effet une erreur a la ligne:
A quelle ligne?
Ta méhtode retirerLivre ainsi écrite ne "Retire" pas vraiment un livre.
Elle le remplace par le livre à la position suivante dans ton tableau.
Problème: Imagine que tu souhaites retirer le livre à la dernière case du tableau, alors ta méthode va vouloir remplacer par le livre à la case suivante (qui n'existe pas!!) Donc!!! Revoir ça!!!
Pour la classe Livre, pas de pb, rassure toi juste que tu y as accès depuis ta classe bibliotheque(Si jamais les deux ne sont pas dans le même repertoire, tu devras l'importer : import "chemin de ta classe")
A quelle ligne?
Ta méhtode retirerLivre ainsi écrite ne "Retire" pas vraiment un livre.
Elle le remplace par le livre à la position suivante dans ton tableau.
Problème: Imagine que tu souhaites retirer le livre à la dernière case du tableau, alors ta méthode va vouloir remplacer par le livre à la case suivante (qui n'existe pas!!) Donc!!! Revoir ça!!!
Pour la classe Livre, pas de pb, rassure toi juste que tu y as accès depuis ta classe bibliotheque(Si jamais les deux ne sont pas dans le même repertoire, tu devras l'importer : import "chemin de ta classe")
Bonsoir,
J'ai donc remi le programme precedent, il y en effet une erreur a la ligne:
A quelle ligne?
Problème: Imagine que tu souhaites retirer le livre à la dernière case du tableau, alors ta méthode va vouloir remplacer par le livre à la case suivante (qui n'existe pas!!) Donc!!! Revoir ça!!!
Voici le programme, avec la correction, je ne sais pas trop si c'est juste, pour le retirer livre:
package tp1ex2;
/**
*
* @author 12mi143
*/
public class Bibliothèque {
private final int nombreLivresMax=5;
private int nombreLivre;
private Livre[] livres;
/** Creates a new instance of Bibliothèque */
public Bibliothèque() {
nombreLivre=0;
livres = new Livre[5];
}
public boolean ajouterLivre(Livre livre) {
boolean resultat;
if(nombreLivre<nombreLivresMax) {
livres[nombreLivre]=livre;
nombreLivre++;
resultat=true;
}
else{
resultat=false;
}
return resultat;
}
public boolean retirerLivre(String livre) {
boolean resultat=false;
for (int i = 0; i < nombreLivre; i++) {
if (livres[i].equals(livre)){
resultat = true;
livres[i] = livres[i+1];
}
if (livres[nombreLivre].equals(livre)) {
livres[nombreLivre]=null;
}
} public void contenu() {
for (int i=0; i<nombreLivre; i++) {
System.out.println("contenu:" +livres[i]);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}
}
Pour la classe Livre, pas de pb, rassure toi juste que tu y as accès depuis ta classe bibliotheque(Si jamais les deux ne sont pas dans le même repertoire, tu devras l'importer : import "chemin de ta classe") Pour la classe Livre, pas de pb, rassure toi juste que tu y as accès depuis ta classe bibliotheque(Si jamais les deux ne sont pas dans le même repertoire, tu devras l'importer : import "chemin de ta classe")
Les classes sont toutes les deux dans:: projet tp1ex2 / Source packages / tp1ex2 / et la il y a les 2 fichiers (bibliotheque et livre)
J'ai donc remi le programme precedent, il y en effet une erreur a la ligne:
A quelle ligne?
Problème: Imagine que tu souhaites retirer le livre à la dernière case du tableau, alors ta méthode va vouloir remplacer par le livre à la case suivante (qui n'existe pas!!) Donc!!! Revoir ça!!!
Voici le programme, avec la correction, je ne sais pas trop si c'est juste, pour le retirer livre:
package tp1ex2;
/**
*
* @author 12mi143
*/
public class Bibliothèque {
private final int nombreLivresMax=5;
private int nombreLivre;
private Livre[] livres;
/** Creates a new instance of Bibliothèque */
public Bibliothèque() {
nombreLivre=0;
livres = new Livre[5];
}
public boolean ajouterLivre(Livre livre) {
boolean resultat;
if(nombreLivre<nombreLivresMax) {
livres[nombreLivre]=livre;
nombreLivre++;
resultat=true;
}
else{
resultat=false;
}
return resultat;
}
public boolean retirerLivre(String livre) {
boolean resultat=false;
for (int i = 0; i < nombreLivre; i++) {
if (livres[i].equals(livre)){
resultat = true;
livres[i] = livres[i+1];
}
if (livres[nombreLivre].equals(livre)) {
livres[nombreLivre]=null;
}
} public void contenu() {
for (int i=0; i<nombreLivre; i++) {
System.out.println("contenu:" +livres[i]);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}
}
Pour la classe Livre, pas de pb, rassure toi juste que tu y as accès depuis ta classe bibliotheque(Si jamais les deux ne sont pas dans le même repertoire, tu devras l'importer : import "chemin de ta classe") Pour la classe Livre, pas de pb, rassure toi juste que tu y as accès depuis ta classe bibliotheque(Si jamais les deux ne sont pas dans le même repertoire, tu devras l'importer : import "chemin de ta classe")
Les classes sont toutes les deux dans:: projet tp1ex2 / Source packages / tp1ex2 / et la il y a les 2 fichiers (bibliotheque et livre)
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
1 juin 2013 à 09:49
1 juin 2013 à 09:49
Bien évidement cette fois ci si tu manipules les Livre, alors pour retirer un livre il faudra cette fois-ci,pas utiliser le == ou equals sur les objets livres, mais plustôt sur leurs auteurs et titres.
En gros deux livres qui ont le même auteur et le mêmee titre sont égaux.
Et de cette façon tu peux supprimer un livre si tu le retrouves déja dans ta collection.
En gros deux livres qui ont le même auteur et le mêmee titre sont égaux.
Et de cette façon tu peux supprimer un livre si tu le retrouves déja dans ta collection.
Bonjour!
Mon programme est il quand meme juste ? Pourriez vous m'en dire plus sur ce qu'il fait par rapport a ce qu'il faut faire ? comme ca il me parait retirer le livre si le nom entré est correct, mais ce que j'ai rajouter avec "null" est ce correct ?
voici la question clairement:
Dans Bibliothèque, ajoutez une méthode qui permet de retirer un Livre, et qui
renvoie un booléen à vrai si le Livre a été trouvé et retiré. (pensez à définir des méthodes pour tester l'égalité entre 2 Auteur et 2 Livre)
Merci comme toujours
PS: comme indication on a eu qu'il faut utiliser un: for, un livres[i].equals
Si il faut utiliser l'autre classe ca devient compliqué pour moi la..
Mon programme est il quand meme juste ? Pourriez vous m'en dire plus sur ce qu'il fait par rapport a ce qu'il faut faire ? comme ca il me parait retirer le livre si le nom entré est correct, mais ce que j'ai rajouter avec "null" est ce correct ?
voici la question clairement:
Dans Bibliothèque, ajoutez une méthode qui permet de retirer un Livre, et qui
renvoie un booléen à vrai si le Livre a été trouvé et retiré. (pensez à définir des méthodes pour tester l'égalité entre 2 Auteur et 2 Livre)
Merci comme toujours
PS: comme indication on a eu qu'il faut utiliser un: for, un livres[i].equals
Si il faut utiliser l'autre classe ca devient compliqué pour moi la..
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
1 juin 2013 à 11:51
1 juin 2013 à 11:51
comme ca il me parait retirer le livre si le nom entré est correct, mais ce que j'ai rajouter avec "null" est ce correct
ça marchera, mais s'il t'arrive de manipuler ton tableau de livres, alors ton programme va te retourner des erreurs (NullPointerException).
Autre chose, avec ça, ne t'attend pas à comparer deux livres qui ont le même titre et le même auteur, si ce n'es le même objet.
exemple si tu fais: Livre livre1 = new Livre("titre1","auteur1");
Livre livre2 = new Livre("titre1","auteur1");
ALors livre1 sera different de livre2.
ça marchera, mais s'il t'arrive de manipuler ton tableau de livres, alors ton programme va te retourner des erreurs (NullPointerException).
Autre chose, avec ça, ne t'attend pas à comparer deux livres qui ont le même titre et le même auteur, si ce n'es le même objet.
exemple si tu fais: Livre livre1 = new Livre("titre1","auteur1");
Livre livre2 = new Livre("titre1","auteur1");
ALors livre1 sera different de livre2.
Bien ^^. Je vais garder ca pour l'instant et voir avec mon prof si ca suffit.
Par contre pour ca je ne sais pas trop comment ajouter les livres, j'ai fait comme vous avez dit pour l'instant avec l'instanciation dans le main
Livre livre1 = new Livre("titre1","auteur1");
Livre livre2 = new Livre("titre1","auteur1");
7) Ajoutez plusieurs Livre d'un même Auteur dans la bibliothèque, et définissez une fonction qui prend comme paramètre le nom d'un auteur, et qui renvoie une
bibliothèque contenant tous les ouvrages présents de cet auteur dans la
bibliothèque courante.
PS: une petite quesion en parallele si vos me l'accordez:
Voici un programme dans lequel je ne comprend pas certaines choses:
package tp1ex3;
/**
*
* @author 12mi143
*/
public class Point {
public int x=1;
public int y=2;
/** Creates a new instance of Point */
public Point(int x, int y) {
this.x=x;
this.y=y;
}
public int distance (Point P1) {
return (int) Math.sqrt((x-P1.x)*(x-P1.x)+(y-P1.y)*(y-P1.y));
}
public void affichage () {
System.out.println("Point:" +x +y);
}
}
pour la methode distance, que veux dire en java distance(Point P1) et P1.x comment cela va marcher si on ne parle pas du x de P1 ?
Par contre pour ca je ne sais pas trop comment ajouter les livres, j'ai fait comme vous avez dit pour l'instant avec l'instanciation dans le main
Livre livre1 = new Livre("titre1","auteur1");
Livre livre2 = new Livre("titre1","auteur1");
7) Ajoutez plusieurs Livre d'un même Auteur dans la bibliothèque, et définissez une fonction qui prend comme paramètre le nom d'un auteur, et qui renvoie une
bibliothèque contenant tous les ouvrages présents de cet auteur dans la
bibliothèque courante.
PS: une petite quesion en parallele si vos me l'accordez:
Voici un programme dans lequel je ne comprend pas certaines choses:
package tp1ex3;
/**
*
* @author 12mi143
*/
public class Point {
public int x=1;
public int y=2;
/** Creates a new instance of Point */
public Point(int x, int y) {
this.x=x;
this.y=y;
}
public int distance (Point P1) {
return (int) Math.sqrt((x-P1.x)*(x-P1.x)+(y-P1.y)*(y-P1.y));
}
public void affichage () {
System.out.println("Point:" +x +y);
}
}
pour la methode distance, que veux dire en java distance(Point P1) et P1.x comment cela va marcher si on ne parle pas du x de P1 ?
tksteph
Messages postés
204
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
3 janvier 2018
25
2 juin 2013 à 00:37
2 juin 2013 à 00:37
Attention!!! Je n'ai pas dit d'ajouter dans le main:
Livre livre1 = new Livre("titre1","auteur1");
Livre livre2 = new Livre("titre1","auteur1");
C'était un exemple que je prenais pour illustrer mes propos.
Tes livres tu les crée de la même manière en donnant un livre et un auteur.
7??? Celà ne devrait pas te poser de problème!
Pour ton programme, Et bien distance(Point) est une méhtode appelée distance et qui prend en paramètre un objet de type Point. l'expression en soi n'a aucune signification "en java" mais dans ton programme si.
P1.x c'est l'attribut x de ton objet P1.
comment cela va marcher si on ne parle pas du x de P1
Et bien P1 c'est juste un nom générique, on aurait pu noter X ou Y ou Z ce serait pareil (à la place de P1 biensur).
Et quand tu parles de comment ça va mercher, je suppose que tu parles de la méthode affichage,
affichage est une méthode de la classe Point et qui utilise des attributs de la classe (notament x et y).
Donc x et y sont des attributs de La classe Point et non de l'objet P1 qui est une sorte de point , utilisé dans ta méthode distance (En dehors de distance, P1 n'a plus de sens)
La méthode va donc bien "marcher" car par défaut tes attributs x et y ont des valeurs (1 et 2 respectivement)
Livre livre1 = new Livre("titre1","auteur1");
Livre livre2 = new Livre("titre1","auteur1");
C'était un exemple que je prenais pour illustrer mes propos.
Tes livres tu les crée de la même manière en donnant un livre et un auteur.
7??? Celà ne devrait pas te poser de problème!
Pour ton programme, Et bien distance(Point) est une méhtode appelée distance et qui prend en paramètre un objet de type Point. l'expression en soi n'a aucune signification "en java" mais dans ton programme si.
P1.x c'est l'attribut x de ton objet P1.
comment cela va marcher si on ne parle pas du x de P1
Et bien P1 c'est juste un nom générique, on aurait pu noter X ou Y ou Z ce serait pareil (à la place de P1 biensur).
Et quand tu parles de comment ça va mercher, je suppose que tu parles de la méthode affichage,
affichage est une méthode de la classe Point et qui utilise des attributs de la classe (notament x et y).
Donc x et y sont des attributs de La classe Point et non de l'objet P1 qui est une sorte de point , utilisé dans ta méthode distance (En dehors de distance, P1 n'a plus de sens)
La méthode va donc bien "marcher" car par défaut tes attributs x et y ont des valeurs (1 et 2 respectivement)